mirror of
https://github.com/johannesjo/super-productivity.git
synced 2026-07-29 02:30:03 +00:00
Root cause: ng serve doesn't reliably detect plugin assets copied to src/assets/bundled-plugins/ during E2E setup, causing 404s in CI. Solution: Implement dual-mode E2E testing: - CI: Build Angular app first (includes plugins), serve with http-server - Local: Continue using ng serve for fast iteration Changes: - Add buildFrontend:e2e script (builds plugins THEN Angular) - Add serveFrontend:e2e:prod script (http-server with SPA proxy) - CI workflows now build frontend before running E2E tests - Global setup skips duplicate plugin builds (saves ~30s) - Playwright config uses environment-specific server commands - Added build output verification step Benefits: - 100% reliable plugin asset availability in CI - Faster CI startup (90s vs 180s timeout) - Better debugging (removed --silent flag) - Local development unchanged
35 lines
1.1 KiB
TypeScript
35 lines
1.1 KiB
TypeScript
import { FullConfig } from '@playwright/test';
|
|
import { execSync } from 'child_process';
|
|
import * as fs from 'fs';
|
|
import * as path from 'path';
|
|
|
|
const globalSetup = async (config: FullConfig): Promise<void> => {
|
|
// Set test environment variables
|
|
process.env.TZ = 'Europe/Berlin';
|
|
process.env.NODE_ENV = 'test';
|
|
console.log(`Running tests with ${config.workers} workers`);
|
|
|
|
// Build plugins before starting tests (skip if already built in CI)
|
|
const pluginManifestPath = path.join(
|
|
process.cwd(),
|
|
'src/assets/bundled-plugins/api-test-plugin/manifest.json',
|
|
);
|
|
|
|
if (fs.existsSync(pluginManifestPath)) {
|
|
console.log('Plugins already built, skipping...');
|
|
} else {
|
|
console.log('Building bundled plugins...');
|
|
try {
|
|
execSync('npm run plugins:build', {
|
|
stdio: 'inherit',
|
|
cwd: process.cwd(),
|
|
});
|
|
console.log('Bundled plugins built successfully');
|
|
} catch (error) {
|
|
console.error('Failed to build plugins:', error);
|
|
throw error; // Fail fast if plugin build fails
|
|
}
|
|
}
|
|
};
|
|
|
|
export default globalSetup;
|