tm-playwright-framework
Version:
Playwright Cucumber TS framework - The easiest way to learn
43 lines (39 loc) • 1.83 kB
text/typescript
import { defineConfig } from '@playwright/test';
import * as dotenv from 'dotenv';
import * as dotenvExpand from 'dotenv-expand';
import path from 'path';
// Load ENV first
process.env.ENV = process.env.ENV || 'stage';
const envFile = path.resolve(process.cwd(), `./app/env/.env.${process.env.ENV}`);
const env = dotenv.config({ path: envFile });
dotenvExpand.expand(env);
export default defineConfig({
testDir: `${process.env.TEST_DIR || './app/test/playwright/'}`, // Directory where tests are located
testMatch: '**/*.test.ts',
reporter: [
['html', { outputFolder: `${process.env.REPORT_PATH || 'playwright-test-results'}/report-html/` }], // Custom path for HTML reports
['json', { outputFile: `${process.env.REPORT_PATH || 'playwright-test-results'}/report.json/` }] // Custom path for JSON reports
],
use: {
headless: true, // Run tests headlessly (set to false for debugging)
viewport: { width: 1280, height: 720 },
baseURL: process.env.API_BASEURL,
// Additional global settings can be added here
},
projects: [
{
name: process.env.BROWSER || 'chromium', // Use the browser name from the environment variable or default to 'chromium'
use: {
browserName: ['chromium', 'firefox', 'webkit'].includes(process.env.BROWSER || '')
? (process.env.BROWSER as 'chromium' | 'firefox' | 'webkit')
: 'chromium'
}
}
],
metadata: {
ENV: `${process.env.ENV || 'PROD'}`
},
workers: Number(process.env.PARALLEL_WORKER) || 3,
timeout: Number(process.env.TIME_OUT) || 80000, // Timeout for each test
retries: Number(process.env.RETRY_COUNT) || 0, // Retry failed tests,
});