From 1cd3597aac808303aa2dc564db4fbb9f4c4bb364 Mon Sep 17 00:00:00 2001 From: Adam Mathes Date: Fri, 13 Feb 2026 20:00:02 -0800 Subject: fix(test): repair and re-enable E2E tests (NK-m8bya7) --- .gitignore | 6 +++++- clean_test_env.sh | 1 + frontend/package.json | 2 +- frontend/tests/e2e.spec.ts | 5 +++-- run_e2e_safe.sh | 51 ++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 61 insertions(+), 4 deletions(-) create mode 100755 run_e2e_safe.sh diff --git a/.gitignore b/.gitignore index e11f334..d67bd06 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,11 @@ .DS_Store config.json go.sum -neko +/neko +/neko_server +/backend.log +/run_e2e_safe.sh +/.data neko.db coverage.out coverage_cross.out diff --git a/clean_test_env.sh b/clean_test_env.sh index 09e0361..aaffc12 100755 --- a/clean_test_env.sh +++ b/clean_test_env.sh @@ -3,6 +3,7 @@ echo "Cleaning up test environment..." # Kill neko backend binary if running pkill -x "neko" || true +pkill -x "neko_server" || true # Kill specific node processes related to vite/playwright # We avoid pkill -f node to not kill the agent connection diff --git a/frontend/package.json b/frontend/package.json index 0ccbec0..e2f7c1c 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -9,7 +9,7 @@ "lint": "eslint .", "preview": "vite preview", "test": "vitest", - "test:e2e:disabled": "playwright test", + "test:e2e": "playwright test", "coverage": "vitest run --coverage" }, "dependencies": { diff --git a/frontend/tests/e2e.spec.ts b/frontend/tests/e2e.spec.ts index b79ee0e..ca4b4ad 100644 --- a/frontend/tests/e2e.spec.ts +++ b/frontend/tests/e2e.spec.ts @@ -7,7 +7,8 @@ test.describe('Neko Reader E2E', () => { await expect(page).toHaveTitle(/Neko/); // 2. Login - await page.fill('#password', ''); + // 2. Login + // Password is empty by default in test env await page.click('button[type="submit"]'); // Check for error message if login failed (optional, for debugging) @@ -46,7 +47,7 @@ test.describe('Neko Reader E2E', () => { // In the current FeedItems.tsx it doesn't show a header, but it should load. // The TagView component might show "Category: Tech" or "Tag: Tech" or just items. // In the current FeedItems.tsx it doesn't show a header, but it should load. - await expect(page.locator('.feed-items, .feed-items-loading, text=No items found')).toBeVisible({ timeout: 10000 }); + await expect(page.locator('.feed-items').or(page.locator('.feed-items-loading')).or(page.getByText('No items found'))).toBeVisible({ timeout: 10000 }); // 7. Logout await page.click('text=Logout'); diff --git a/run_e2e_safe.sh b/run_e2e_safe.sh new file mode 100755 index 0000000..10f8f91 --- /dev/null +++ b/run_e2e_safe.sh @@ -0,0 +1,51 @@ +#!/bin/bash +set -e + +# Cleanup first +./clean_test_env.sh + +echo "Building backend..." +go build -o neko_server main.go + +echo "Creating data directory..." +mkdir -p .data + +echo "Starting backend on port 4994..." +./neko_server --http=4994 --database=.data/test.db > backend.log 2>&1 & +SERVER_PID=$! + +echo "Backend PID: $SERVER_PID" + +# Wait for server to be ready +echo "Waiting for backend to start..." +for i in {1..30}; do + if nc -z localhost 4994; then + echo "Backend is up!" + break + fi + echo "Waiting..." + sleep 1 +done + +if ! nc -z localhost 4994; then + echo "Backend failed to start. Check backend.log" + cat backend.log + kill $SERVER_PID || true + exit 1 +fi + +echo "Running E2E tests..." +cd frontend +if npm run test:e2e; then + echo "Tests passed!" + EXIT_CODE=0 +else + echo "Tests failed!" + EXIT_CODE=1 +fi + +echo "Cleaning up..." +kill $SERVER_PID || true +./clean_test_env.sh + +exit $EXIT_CODE -- cgit v1.2.3