test(playwright): fix edge selection and auto pan tests

This commit is contained in:
moklick
2024-03-06 14:44:58 +01:00
parent 64e240e7a5
commit 9ad0aaf277
5 changed files with 229 additions and 213 deletions
@@ -3,6 +3,7 @@ import { MarkerType } from '@xyflow/react';
export default { export default {
flowProps: { flowProps: {
fitView: true, fitView: true,
multiSelectionKeyCode: 's',
nodes: [ nodes: [
{ {
id: '1', id: '1',
+213 -198
View File
File diff suppressed because it is too large Load Diff
+6 -7
View File
@@ -30,11 +30,12 @@ test.describe('Edges', () => {
await edge1.click(); await edge1.click();
await expect(edge1).toHaveClass(/selected/); await expect(edge1).toHaveClass(/selected/);
// FIXME: I cannot get this to work // we are using "s" here because Meta doesn't work for some reason
await page.keyboard.down('MetaLeft'); await page.keyboard.down('s');
await edge2.click(); await edge2.click();
await expect(edge2).toHaveClass(/selected/); await page.keyboard.up('s');
await expect(edge2).toHaveClass(/selected/);
await expect(edge1).toHaveClass(/selected/); await expect(edge1).toHaveClass(/selected/);
}); });
}); });
@@ -88,8 +89,6 @@ test.describe('Edges', () => {
await expect(edge).toBeAttached(); await expect(edge).toBeAttached();
const edgeBox = await edge.boundingBox();
await edge.click(); await edge.click();
await expect(edge).toHaveClass(/selected/); await expect(edge).toHaveClass(/selected/);
@@ -154,8 +153,8 @@ test.describe('Edges', () => {
await expect(edge).toBeAttached(); await expect(edge).toBeAttached();
await expect(edge).toHaveAttribute('marker-start', 'url(#1__type=arrowclosed)'); await expect(edge).toHaveAttribute('marker-start', "url('#1__type=arrowclosed')");
await expect(edge).toHaveAttribute('marker-end', 'url(#1__type=arrow)'); await expect(edge).toHaveAttribute('marker-end', "url('#1__type=arrow')");
}); });
}); });
}); });
+7 -6
View File
@@ -52,7 +52,7 @@ test.describe('Pane default', () => {
}); });
test.describe('minZoom & maxZoom', () => { test.describe('minZoom & maxZoom', () => {
test('minZoom works as intended', async ({ page }) => { test('minZoom', async ({ page }) => {
const pane = page.locator(`.${FRAMEWORK}-flow__pane`); const pane = page.locator(`.${FRAMEWORK}-flow__pane`);
const viewport = page.locator(`.${FRAMEWORK}-flow__viewport`); const viewport = page.locator(`.${FRAMEWORK}-flow__viewport`);
@@ -67,7 +67,7 @@ test.describe('Pane default', () => {
expect(transformsMinZoom.scale).toBe(0.25); expect(transformsMinZoom.scale).toBe(0.25);
}); });
test('maxZoom works as intended', async ({ page }) => { test('maxZoom', async ({ page }) => {
const pane = page.locator(`.${FRAMEWORK}-flow__pane`); const pane = page.locator(`.${FRAMEWORK}-flow__pane`);
const viewport = page.locator(`.${FRAMEWORK}-flow__viewport`); const viewport = page.locator(`.${FRAMEWORK}-flow__viewport`);
@@ -84,7 +84,7 @@ test.describe('Pane default', () => {
}); });
test.describe('autoPan', () => { test.describe('autoPan', () => {
test('autoPanOnNodeDrag works as intended', async ({ page }) => { test('autoPanOnNodeDrag', async ({ page }) => {
const viewport = page.locator(`.${FRAMEWORK}-flow__viewport`); const viewport = page.locator(`.${FRAMEWORK}-flow__viewport`);
const node = page.locator('[data-id="1"]'); const node = page.locator('[data-id="1"]');
@@ -96,7 +96,8 @@ test.describe('Pane default', () => {
await page.mouse.down(); await page.mouse.down();
await page.mouse.move(0, 0); await page.mouse.move(0, 0);
await page.waitForTimeout(500); await page.waitForTimeout(500);
await page.mouse.move(100, 100); await page.mouse.move(1000, 100, { steps: 100 });
await page.mouse.up();
const transformAfter = await getTransform(viewport); const transformAfter = await getTransform(viewport);
@@ -104,7 +105,7 @@ test.describe('Pane default', () => {
await expect(transformAfter.translateY).toBeGreaterThan(transformBefore.translateY); await expect(transformAfter.translateY).toBeGreaterThan(transformBefore.translateY);
}); });
test('autoPanOnConnect works as intended', async ({ page }) => { test('autoPanOnConnect', async ({ page }) => {
const viewport = page.locator(`.${FRAMEWORK}-flow__viewport`); const viewport = page.locator(`.${FRAMEWORK}-flow__viewport`);
const handle = page.locator(`[data-id="1"] .${FRAMEWORK}-flow__handle`); const handle = page.locator(`[data-id="1"] .${FRAMEWORK}-flow__handle`);
@@ -116,7 +117,7 @@ test.describe('Pane default', () => {
await page.mouse.down(); await page.mouse.down();
await page.mouse.move(0, 0); await page.mouse.move(0, 0);
await page.waitForTimeout(500); await page.waitForTimeout(500);
await page.mouse.move(100, 100); await page.mouse.move(100, 100, { steps: 100 });
const transformAfter = await getTransform(viewport); const transformAfter = await getTransform(viewport);
+2 -2
View File
@@ -13,11 +13,11 @@
"author": "", "author": "",
"license": "ISC", "license": "ISC",
"devDependencies": { "devDependencies": {
"@playwright/test": "^1.40.1", "@playwright/test": "^1.42.1",
"@types/node": "^18.7.16" "@types/node": "^18.7.16"
}, },
"dependencies": { "dependencies": {
"@playwright/experimental-ct-react": "^1.40.1", "@playwright/experimental-ct-react": "^1.42.1",
"@types/react": "^18.2.31", "@types/react": "^18.2.31",
"@types/react-dom": "^18.2.14", "@types/react-dom": "^18.2.14",
"react": "^18.2.0", "react": "^18.2.0",