55 lines
1.4 KiB
JavaScript
55 lines
1.4 KiB
JavaScript
/**
|
|
* Shared helpers for Verstak E2E tests.
|
|
*/
|
|
import { expect } from '@playwright/test';
|
|
|
|
/** Wait for the app to finish loading (loading screen disappears) */
|
|
export async function waitForAppReady(page) {
|
|
// App shows "Loading Verstak..." initially, then renders the main layout
|
|
await page.waitForSelector('main', { state: 'visible', timeout: 15000 });
|
|
// Wait a bit for all async data to load
|
|
await page.waitForTimeout(1000);
|
|
}
|
|
|
|
/** Collect all console errors since last reset */
|
|
export function setupConsoleCollector(page) {
|
|
const errors = [];
|
|
page.on('console', (msg) => {
|
|
if (msg.type() === 'error') {
|
|
errors.push(msg.text());
|
|
}
|
|
});
|
|
page.on('pageerror', (err) => {
|
|
errors.push(err.message);
|
|
});
|
|
return {
|
|
getErrors: () => errors,
|
|
assertNoErrors: () => {
|
|
if (errors.length > 0) {
|
|
throw new Error(`Console errors detected:\n${errors.join('\n')}`);
|
|
}
|
|
},
|
|
};
|
|
}
|
|
|
|
/** Reset mock state before each test */
|
|
export async function resetMockState(page) {
|
|
await page.evaluate(() => {
|
|
if (window.__wailsMock) {
|
|
window.__wailsMock.reset();
|
|
}
|
|
});
|
|
}
|
|
|
|
/** Set plugin status in mock */
|
|
export async function setPluginStatus(page, pluginId, status, enabled) {
|
|
await page.evaluate(
|
|
({ id, st, en }) => {
|
|
if (window.__wailsMock) {
|
|
window.__wailsMock.setPluginStatus(id, st, en);
|
|
}
|
|
},
|
|
{ id: pluginId, st: status, en: enabled }
|
|
);
|
|
}
|