140 lines
4.0 KiB
TypeScript
140 lines
4.0 KiB
TypeScript
import { test, expect } from './mind-elixir-test'
|
|
|
|
const data = {
|
|
nodeData: {
|
|
topic: 'Root',
|
|
id: 'root',
|
|
children: [
|
|
{
|
|
id: 'child1',
|
|
topic: 'Child 1',
|
|
},
|
|
],
|
|
},
|
|
}
|
|
|
|
test.beforeEach(async ({ me }) => {
|
|
await me.init(data)
|
|
})
|
|
|
|
test('Simple Undo/Redo - Basic Add Node', async ({ page, me }) => {
|
|
// Add a node
|
|
await me.click('Child 1')
|
|
await page.keyboard.press('Enter')
|
|
await page.keyboard.press('Enter')
|
|
await expect(page.getByText('New Node')).toBeVisible()
|
|
|
|
// Test Ctrl+Z (undo)
|
|
await page.keyboard.press('Control+z')
|
|
await expect(page.getByText('New Node')).toBeHidden()
|
|
|
|
// Test Ctrl+Y (redo)
|
|
await page.keyboard.press('Control+y')
|
|
await expect(page.getByText('New Node')).toBeVisible()
|
|
})
|
|
|
|
test('Simple Undo/Redo - Basic Remove Node', async ({ page, me }) => {
|
|
// Remove a node
|
|
await me.click('Child 1')
|
|
await page.keyboard.press('Delete')
|
|
await expect(page.getByText('Child 1')).toBeHidden()
|
|
|
|
// Test Ctrl+Z (undo)
|
|
await page.keyboard.press('Control+z')
|
|
await expect(page.getByText('Child 1')).toBeVisible()
|
|
|
|
// Test Ctrl+Y (redo)
|
|
await page.keyboard.press('Control+y')
|
|
await expect(page.getByText('Child 1')).toBeHidden()
|
|
})
|
|
|
|
test('Simple Undo/Redo - Test Ctrl+Shift+Z', async ({ page, me }) => {
|
|
// Add a node
|
|
await me.click('Child 1')
|
|
await page.keyboard.press('Tab') // Add child
|
|
await page.keyboard.press('Enter')
|
|
await expect(page.getByText('New Node')).toBeVisible()
|
|
|
|
// Undo
|
|
await page.keyboard.press('Control+z')
|
|
await expect(page.getByText('New Node')).toBeHidden()
|
|
|
|
// Try Ctrl+Shift+Z for redo
|
|
await page.keyboard.press('Control+Shift+Z')
|
|
await page.waitForTimeout(500)
|
|
|
|
const nodeVisible = await page.getByText('New Node').isVisible()
|
|
console.log('Node visible after Ctrl+Shift+Z:', nodeVisible)
|
|
|
|
// If that didn't work, try lowercase z
|
|
if (!nodeVisible) {
|
|
await page.keyboard.press('Control+Shift+Z')
|
|
await page.waitForTimeout(500)
|
|
const nodeVisible2 = await page.getByText('New Node').isVisible()
|
|
console.log('Node visible after Ctrl+Shift+z:', nodeVisible2)
|
|
}
|
|
})
|
|
|
|
test('Simple Undo/Redo - Test Meta Keys', async ({ page, me }) => {
|
|
// Add a node
|
|
await me.click('Root')
|
|
await page.keyboard.press('Tab')
|
|
await page.keyboard.press('Enter')
|
|
await expect(page.getByText('New Node')).toBeVisible()
|
|
|
|
// Test Meta+Z (Mac style undo)
|
|
await page.keyboard.press('Meta+z')
|
|
await expect(page.getByText('New Node')).toBeHidden()
|
|
|
|
// Test Meta+Y (Mac style redo)
|
|
await page.keyboard.press('Meta+y')
|
|
await expect(page.getByText('New Node')).toBeVisible()
|
|
})
|
|
|
|
test('Simple Undo/Redo - Multiple Operations', async ({ page, me }) => {
|
|
// Operation 1: Add child
|
|
await me.click('Child 1')
|
|
await page.keyboard.press('Tab')
|
|
await page.keyboard.press('Enter')
|
|
await expect(page.getByText('New Node')).toBeVisible()
|
|
|
|
// Operation 2: Add sibling
|
|
await page.keyboard.press('Enter')
|
|
await page.keyboard.press('Enter')
|
|
const newNodes = page.getByText('New Node')
|
|
await expect(newNodes).toHaveCount(2)
|
|
|
|
// Undo twice
|
|
await page.keyboard.press('Control+z')
|
|
await expect(newNodes).toHaveCount(1)
|
|
|
|
await page.keyboard.press('Control+z')
|
|
await expect(newNodes).toHaveCount(0)
|
|
|
|
// Redo twice
|
|
await page.keyboard.press('Control+y')
|
|
await expect(newNodes).toHaveCount(1)
|
|
|
|
await page.keyboard.press('Control+y')
|
|
await expect(newNodes).toHaveCount(2)
|
|
})
|
|
|
|
test('Simple Undo/Redo - Edit Node', async ({ page, me }) => {
|
|
// Edit a node
|
|
await me.dblclick('Child 1')
|
|
await page.keyboard.press('Control+a')
|
|
await page.keyboard.insertText('Modified Child')
|
|
await page.keyboard.press('Enter')
|
|
await expect(page.getByText('Modified Child')).toBeVisible()
|
|
|
|
// Undo edit
|
|
await page.keyboard.press('Control+z')
|
|
await expect(page.getByText('Child 1')).toBeVisible()
|
|
await expect(page.getByText('Modified Child')).toBeHidden()
|
|
|
|
// Redo edit
|
|
await page.keyboard.press('Control+y')
|
|
await expect(page.getByText('Modified Child')).toBeVisible()
|
|
await expect(page.getByText('Child 1')).toBeHidden()
|
|
})
|