blob: 1caf0c84d626fdaddad01eafa07e316ef434976e (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
import { test, expect } from '@playwright/test';
test.describe('Neko Reader E2E', () => {
test('should allow login, viewing feeds, and logout', async ({ page }) => {
// 1. Go to Login
await page.goto('/v2/login');
await expect(page).toHaveTitle(/Neko/);
// 2. Login
await page.fill('#password', '');
await page.click('button[type="submit"]');
// Check for error message if login failed (optional, for debugging)
// await expect(page.locator('.error-message')).toBeVisible({ timeout: 2000 }).catch(() => {});
// 3. Verify Dashboard
// Keep checking for /v2/ or /v2
await expect(page).toHaveURL(/.*\/v2\/?$/);
await expect(page.locator('h1.logo')).toContainText('🐱');
await expect(page.getByText('Logout')).toBeVisible();
// 4. Verify Feed List
await page.click('text=Settings');
await expect(page).toHaveURL(/.*\/v2\/settings/);
// Add a feed
const feedUrl = 'http://rss.cnn.com/rss/cnn_topstories.rss';
await page.fill('input[type="url"]', feedUrl);
await page.click('text=Add Feed');
// Wait for it to appear
await expect(page.getByText(feedUrl)).toBeVisible();
// 5. Navigate to Feed
await page.goto('/v2/');
// Default view is now the stream.
// It should NOT show "Select a feed" anymore.
// Wait for items or "No items found" or loading state
await expect(page.locator('.feed-items').or(page.locator('.feed-items-loading')).or(page.getByText('No items found'))).toBeVisible({ timeout: 10000 });
// 6. Verify Tag View
// Go to a tag URL (simulated, since we can't easily add tags via UI in this test yet without setup)
// But we can check if the route loads without crashing
await page.goto('/v2/tag/Tech');
// 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')).toBeVisible();
// 7. Logout
await page.click('text=Logout');
await expect(page).toHaveURL(/.*\/v2\/login/);
});
});
|