From 7d0f5a50f43feee8b7c203d69ef88a7daab71530 Mon Sep 17 00:00:00 2001 From: "smx.pusha" <139338836+smxpusha@users.noreply.github.com> Date: Sun, 16 Aug 2026 17:49:14 +0200 Subject: [PATCH] ENH - verify browser test data coverage --- frontend/testserver/smoke.cjs | 105 +++++++++++++++++++++++++++++++++- 1 file changed, 103 insertions(+), 2 deletions(-) diff --git a/frontend/testserver/smoke.cjs b/frontend/testserver/smoke.cjs index c0b5247..03a66ba 100644 --- a/frontend/testserver/smoke.cjs +++ b/frontend/testserver/smoke.cjs @@ -67,6 +67,7 @@ const browserDataRequests = [ ['weather:get', {}], ['weazel-news:context', {}], ['weazel-news:list', { category: null, offset: 0, search: '' }], + ['weazel-news:manage-list', { offset: 0, search: '', status: 'all' }], ] async function post(baseUrl, endpoint, body = {}) { @@ -86,6 +87,102 @@ async function expectSuccess(baseUrl, endpoint, body = {}, data = false) { return result.data } +function expectItems(value, label, minimum = 1) { + assert( + Array.isArray(value) && value.length >= minimum, + `${label} did not include enough browser test data`, + ) +} + +function verifyBrowserTestData(dataByEndpoint) { + const development = dataByEndpoint.get('development:bootstrap') + expectItems(development.device.data.alarms.payload, 'clock alarms', 3) + expectItems( + development.device.data.media.payload.captures, + 'camera captures', + 2, + ) + expectItems(development.memos, 'memos', 3) + expectItems(development.notes, 'notes', 4) + assert( + Object.keys(development.device.data.games.payload).length >= 7, + 'games did not include saved browser test progress', + ) + + expectItems(dataByEndpoint.get('health:overview').days, 'health history', 7) + expectItems( + dataByEndpoint.get('billing:list').invoices, + 'billing invoices', + 3, + ) + expectItems(dataByEndpoint.get('calendar:list'), 'calendar events', 5) + expectItems(dataByEndpoint.get('calls:recents'), 'recent calls', 5) + expectItems(dataByEndpoint.get('companies:list').companies, 'companies', 3) + expectItems(dataByEndpoint.get('contacts:list'), 'contacts', 10) + expectItems( + dataByEndpoint.get('crewlink:bootstrap').groups, + 'CrewLink groups', + 2, + ) + expectItems( + dataByEndpoint.get('darkchat:bootstrap').conversations, + 'DarkChat conversations', + ) + expectItems(dataByEndpoint.get('feather:feed').items, 'Feather posts', 5) + expectItems( + dataByEndpoint.get('flare:bootstrap').suggestions, + 'Flare suggestions', + 5, + ) + expectItems(dataByEndpoint.get('fliptok:feed').items, 'FlipTok videos', 2) + expectItems(dataByEndpoint.get('gallery:list'), 'gallery media', 30) + expectItems( + dataByEndpoint.get('garage:vehicles').vehicles, + 'garage vehicles', + 4, + ) + expectItems( + dataByEndpoint.get('housing:overview').properties, + 'housing properties', + 5, + ) + expectItems(dataByEndpoint.get('mail:list').items, 'inbox mail', 2) + expectItems(dataByEndpoint.get('map:markers'), 'map markers') + expectItems( + dataByEndpoint.get('marketplace:list').items, + 'CityMarkt listings', + 4, + ) + expectItems( + dataByEndpoint.get('messages:conversations'), + 'message conversations', + 5, + ) + expectItems( + dataByEndpoint.get('music:bootstrap').serverTracks, + 'music tracks', + 3, + ) + expectItems(dataByEndpoint.get('pages:list').items, 'Local Pages posts', 4) + expectItems( + dataByEndpoint.get('picstagram:feed').items, + 'Picstagram posts', + 2, + ) + expectItems(dataByEndpoint.get('radio:get').history, 'radio history', 2) + expectItems(dataByEndpoint.get('skyride:history').items, 'SkyRide history', 2) + expectItems( + dataByEndpoint.get('weazel-news:list').items, + 'Weazel News articles', + 5, + ) + expectItems( + dataByEndpoint.get('weazel-news:manage-list').items, + 'Weazel News editorial articles', + 7, + ) +} + async function verifyStatefulActions(baseUrl) { let gallery = await expectSuccess(baseUrl, 'gallery:list', {}, true) assert(gallery.length >= 10, 'gallery:list did not include enough test media') @@ -110,7 +207,6 @@ async function verifyStatefulActions(baseUrl) { gallery.find((item) => item.id === gallery[0].id)?.favorite, true, ) - const articlePhotos = gallery .filter((item) => item.mediaType === 'photo') .slice(0, 7) @@ -594,9 +690,14 @@ async function main() { const baseUrl = `http://127.0.0.1:${address.port}` try { + const dataByEndpoint = new Map() for (const [endpoint, body] of browserDataRequests) { - await expectSuccess(baseUrl, endpoint, body, true) + dataByEndpoint.set( + endpoint, + await expectSuccess(baseUrl, endpoint, body, true), + ) } + verifyBrowserTestData(dataByEndpoint) await verifyStatefulActions(baseUrl)