@@ -428,6 +428,51 @@ src/
428428- Admin tests: ` *.admin .spec .ts ` files
429429- Run: ` yarn test:e2e `
430430
431+ #### Playwright Fixtures Pattern
432+
433+ **Use fixtures for expensive test setup** (creating entities, API calls) to avoid timeouts:
434+
435+ ` ` ` typescript
436+ import { expect , test as base } from ' @playwright/test' ;
437+
438+ type TestFixtures = {
439+ eventId: string ;
440+ eventPreviewUrl : string ;
441+ };
442+
443+ const test = base .extend <TestFixtures >({
444+ eventId : async ({ page , baseURL }, applyFixture ) => {
445+ // Expensive setup: create event once
446+ await page .goto (` ${baseURL }/create ` );
447+ // ... event creation steps ...
448+ const eventId = extractedId ;
449+ await applyFixture (eventId );
450+ },
451+
452+ eventPreviewUrl : async ({ eventId }, applyFixture ) => {
453+ // Derived fixture using eventId
454+ await applyFixture (` /events/${eventId } ` );
455+ },
456+ });
457+
458+ test .describe (' My Tests' , () => {
459+ test .beforeEach (async ({ page , eventPreviewUrl }) => {
460+ // Fast: just navigate using fixture
461+ await page .goto (eventPreviewUrl );
462+ });
463+
464+ test (' my test' , async ({ eventId }) => {
465+ // Use fixtures in tests
466+ });
467+ });
468+ ` ` `
469+
470+ **Benefits:**
471+
472+ - Fixtures run once per test file (not per test)
473+ - Prevents timeout issues from repeated setup
474+ - See examples: ` src / test / e2e / manage / roles / roles - edit .admin .spec .ts ` , ` src / test / e2e / events / event - preview - actions .spec .ts `
475+
431476### Unit Testing (Jest)
432477
433478- Uses Jest with React Testing Library
0 commit comments