aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore6
-rwxr-xr-xclean_test_env.sh1
-rw-r--r--frontend/package.json2
-rw-r--r--frontend/tests/e2e.spec.ts5
-rwxr-xr-xrun_e2e_safe.sh51
5 files changed, 61 insertions, 4 deletions
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