Files
xyflow/tests/playwright
peterkogo 2474c8be14 fix tests
2025-04-16 17:36:05 +02:00
..
2025-04-16 17:36:05 +02:00
2023-10-25 13:23:14 +02:00
2025-04-16 17:36:05 +02:00
2025-04-16 17:36:05 +02:00

End-to-End with Playwright

Here you can find our framework independant E2E tests written with playwright.

Installation

cd tests/playwright # check if you are in the correct directory 

pnpm install # install node dependencies
npx playwright install # follow the instructions to install browsers

Running the tests

pnpm run test:react # runs all the tests headless for react
pnpm run test:react:ui # runs tests for react in UI mode, good for debugging

pnpm run test:svelte # runs all the tests headless for svelte
pnpm run test:svelte:ui # runs tests for svelte in UI mode, good for debugging 

Creating new tests

You can find all test implementations in the respective example projects under /examples/react and /examples/svelte. These example projects are also used for active development, so you can ignore most of the code in them.

Create new example or use an existing one

You will find all of the flows currently implemented for E2E testing at /examples/{framework}/src/generic-tests. Here you can create a new flow you want to write you test on by creating a new file and defining all of the props that will be applied to the components like this:

// NewFolder/NewTest.ts
export default {
  flowProps: {
    minZoom: 0.25,
    maxZoom: 4,
    fitView: true,
    nodes: [
      {
        id: '1',
        data: { label: '1' },
        position: { x: 0, y: 0 },
        type: 'input',
      },
      {
        id: '2',
        data: { label: '2' },
        position: { x: -100, y: 100 },
      },
      {
        id: '3',
        data: { label: '3' },
        position: { x: 100, y: 100 },
      },
    ],
    edges: [
      {
        id: 'first-edge',
        source: '1',
        target: '2',
      },
      {
        id: 'second-edge',
        source: '1',
        target: '3',
      },
    ],
  },
  backgroundProps: { /*... */},
  panelProps: { /*... */},
  minimapProps:  { /*... */},
  controlsProps:  { /*... */},
} satisfies FlowConfig;

⚠️ The directory and filename you choose will determine the route of the test case. Here it will reachable under http://localhost:3000/tests/generic/newDirectory/newTest. (3000 is the port of the react examples, it might differ for other frameworks)

Create new E2E test case

Now you can start writing you new test case under /tests/playwright/e2e