n8n/packages/testing/playwright/janitor.config.mjs
Declan Carroll 66087e2dd5
chore: Apply biome formatting to playwright package (no-changelog) (#26586)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 10:47:20 +00:00

87 lines
2.2 KiB
JavaScript

/**
* n8n Playwright Janitor Configuration
*
* This configures the janitor for the n8n Playwright test suite.
*/
import { dirname } from 'path';
import { fileURLToPath } from 'url';
import { defineConfig } from '@n8n/playwright-janitor';
const __dirname = dirname(fileURLToPath(import.meta.url));
export default defineConfig({
rootDir: __dirname,
patterns: {
pages: ['pages/**/*.ts'],
components: ['pages/components/**/*.ts'],
flows: ['composables/**/*.ts'],
tests: ['tests/**/*.spec.ts'],
services: ['services/**/*.ts'],
fixtures: ['fixtures/**/*.ts'],
helpers: ['helpers/**/*.ts', 'utils/**/*.ts', 'config/**/*.ts', 'tests/**/fixtures.ts'],
factories: ['test-data/**/*.ts', 'factories/**/*.ts'],
testData: ['workflows/**/*'],
},
excludeFromPages: [
'n8nPage.ts', // Facade
'BasePage.ts', // Base class
'BaseModal.ts',
'BaseComponent.ts',
],
facade: {
file: 'pages/n8nPage.ts',
className: 'n8nPage',
excludeTypes: ['Page', 'ApiHelpers'],
},
fixtureObjectName: 'n8n',
apiFixtureName: 'api',
rawApiPatterns: [
/\brequest\.(get|post|put|patch|delete|head)\s*\(/i,
/\bfetch\s*\(/,
/\.request\(\s*['"`]/,
],
flowLayerName: 'Composable',
architectureLayers: ['Tests', 'Composables', 'Pages', 'BasePage'],
rules: {
'boundary-protection': { enabled: true, severity: 'error' },
'scope-lockdown': { enabled: true, severity: 'error' },
'selector-purity': { enabled: true, severity: 'error' },
deduplication: { enabled: true, severity: 'warning' },
'dead-code': { enabled: true, severity: 'warning' },
'no-page-in-flow': {
enabled: true,
severity: 'warning',
allowPatterns: [
/\.page\.keyboard/,
/\.page\.evaluate/,
/\.page\.waitForLoadState/,
/\.page\.waitForURL/,
/\.page\.reload/,
],
},
'api-purity': { enabled: true, severity: 'warning' },
// Enforce facade pattern - access pages through n8n.* instead of new *Page()
'no-direct-page-instantiation': { enabled: true, severity: 'error' },
},
orchestration: {
metricsPath: '../../../.github/test-metrics/playwright.json',
specFilter: 'tests/e2e/',
},
tcr: {
testCommand: 'pnpm test:local',
workerCount: 1,
allowedTestCommands: ['pnpm test:local', 'pnpm test:container:sqlite'],
},
});