Add searchable index health and repair tools
This commit is contained in:
22
tests/admin-index.spec.js
Normal file
22
tests/admin-index.spec.js
Normal file
@@ -0,0 +1,22 @@
|
||||
const { test, expect } = require('@playwright/test');
|
||||
|
||||
test('search index tab shows source coverage and runs bounded repair actions', async ({ page }) => {
|
||||
const actions = [];
|
||||
await page.route('**/api/**', async route => {
|
||||
const req = route.request(), url = new URL(req.url()); let body = { ok: true };
|
||||
if (url.pathname === '/api/admin/me') body = { enabled: true, admin: true };
|
||||
else if (url.pathname === '/api/admin/index/health') body = { ok: true, total: 100, urlCount: 90, detailCount: 40, thumbnailCount: 75, urlCoverage: .9, detailCoverage: .4, thumbnailCoverage: .75, sources: [{ source: 'deep', videos: 70, discoveries: 300, lastSeen: 1791900000000 }], lastRun: { status: 'complete', createdAt: 1791900000000, progress: { queriesDone: 20, newVideos: 400 } }, backfill: [{ source: 'media_cache', cursor: 10, ceiling: 20, done: false }] };
|
||||
else if (url.pathname === '/api/admin/index/backfill' && req.method() === 'POST') { actions.push('backfill'); body.processed = 3; }
|
||||
else if (url.pathname === '/api/admin/index/cleanup' && req.method() === 'POST') { actions.push('cleanup'); body.removed = 2; }
|
||||
else if (url.pathname === '/api/admin/media') body.media = [];
|
||||
else if (url.pathname === '/api/uploads') body.uploads = [];
|
||||
else if (url.pathname === '/api/admin/flags') body.flags = [];
|
||||
await route.fulfill({ contentType: 'application/json', body: JSON.stringify(body) });
|
||||
});
|
||||
await page.goto('/admin.html#index');
|
||||
await expect(page.locator('#indexMetrics')).toContainText('90%');
|
||||
await expect(page.locator('#indexSources')).toContainText('deep');
|
||||
await page.locator('#indexBackfill').click(); await expect(page.locator('#indexStatus')).toContainText('Processed 3');
|
||||
page.once('dialog', dialog => dialog.accept()); await page.locator('#indexCleanup').click(); await expect(page.locator('#indexStatus')).toContainText('Removed 2');
|
||||
expect(actions).toEqual(['backfill', 'cleanup']);
|
||||
});
|
||||
Reference in New Issue
Block a user