fix: update Cucumber config and hooks to properly load test infrastructure
Pull Request / unit-tests (pull_request) Successful in 59s
Pull Request / analyze-bump-type (pull_request) Successful in 10s
Release / release (push) Failing after 13s
Build CI Images / build-ci-base (push) Failing after 21s

- Add support files to require config for proper hook loading
- Remove database cleanup from hooks (browser-only testing)
- Fix World type issues in hooks
- Cucumber tests now run successfully
This commit was merged in pull request #26.
This commit is contained in:
2026-04-25 21:24:14 -07:00
committed by david
parent a77870b894
commit 5dc24db277
2 changed files with 12 additions and 20 deletions
+9 -20
View File
@@ -2,9 +2,8 @@
* Cucumber hooks for EuchreCamp E2E tests
*/
import { Before, After, BeforeAll, AfterAll, IWorldOptions, World } from '@cucumber/cucumber';
import { chromium, Browser, type FullConfig } from '@playwright/test';
import { cleanupAllTestData } from '@/__tests__/test-utils';
import { Before, After, BeforeAll, AfterAll } from '@cucumber/cucumber';
import { chromium, Browser } from '@playwright/test';
import { world } from './world';
import path from 'path';
import fs from 'fs';
@@ -48,7 +47,7 @@ AfterAll(async function () {
/**
* Before each scenario: Create new page context
*/
Before(async function (this: World) {
Before(async function () {
// Create new context and page
world.context = await browser.newContext();
world.page = await world.context.newPage();
@@ -69,9 +68,9 @@ Before(async function (this: World) {
});
/**
* After each scenario: Close page and cleanup test data
* After each scenario: Close page
*/
After(async function (this: World) {
After(async function () {
console.log('🌍 Cleaning up after scenario...');
// Close page and context
@@ -81,39 +80,29 @@ After(async function (this: World) {
if (world.context) {
await world.context.close();
}
// Clean up test data
try {
await cleanupAllTestData();
console.log('🌍 Test data cleaned up');
} catch (error) {
console.error('🌍 Error cleaning up test data:', error);
}
});
/**
* Custom hook for navigating to a page
*/
Before({ tags: '@navigation' }, async function (this: World) {
Before({ tags: '@navigation' }, async function () {
console.log('🌍 Navigation hook triggered');
});
/**
* Custom hook for authenticated scenarios
*/
Before({ tags: '@authenticated' }, async function (this: World) {
Before({ tags: '@authenticated' }, async function () {
console.log('🌍 Authenticated hook triggered');
// This hook can be extended to load saved auth state
});
/**
* Tag hooks for specific scenarios
*/
Before({ tags: '@slow' }, async function (this: World) {
Before({ tags: '@slow' }, async function () {
console.log('🌍 Slow test - extending timeout');
// Note: Timeout extension happens at step definition level
});
Before({ tags: '@flaky' }, async function (this: World) {
Before({ tags: '@flaky' }, async function () {
console.log('🌍 Flaky test - retry enabled');
});