mirror of
				https://github.com/microsoft/playwright.git
				synced 2025-06-26 21:40:17 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			44 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
const { test, expect } = require('@playwright/test');
 | 
						|
 | 
						|
const { spawn } = require('child_process');
 | 
						|
const fs = require('fs');
 | 
						|
const path = require('path');
 | 
						|
 | 
						|
for (const dir of fs.readdirSync(__dirname)) {
 | 
						|
  const folder = path.join(__dirname, dir);
 | 
						|
  if (!fs.statSync(folder).isDirectory())
 | 
						|
    continue;
 | 
						|
  test.describe.serial(path.basename(folder), () => {
 | 
						|
    test.setTimeout(7 * 60 * 1000 /* 7 minutes */);
 | 
						|
    test('install', async () => {
 | 
						|
      await run('npm', ['i'], folder);
 | 
						|
    });
 | 
						|
 | 
						|
    test('typecheck', async () => {
 | 
						|
      await run('npm', ['run', 'typecheck'], folder);
 | 
						|
    });
 | 
						|
 | 
						|
    for (const project of ['chromium', 'firefox', 'webkit']) {
 | 
						|
      test(project, async () => {
 | 
						|
        await run('npx', ['playwright', 'test', '--project=' + project, '--reporter=list'], folder);
 | 
						|
      });
 | 
						|
    } 
 | 
						|
  });
 | 
						|
}
 | 
						|
 | 
						|
async function run(command, args, folder) {
 | 
						|
  const child = spawn(command, args, {
 | 
						|
    cwd: folder,
 | 
						|
    stdio: 'pipe',
 | 
						|
    shell: true,
 | 
						|
    env: process.env
 | 
						|
  });
 | 
						|
  child.stdout.on('data', data => process.stdout.write(data));
 | 
						|
  child.stderr.on('data', data => process.stdout.write(data));
 | 
						|
  process.on('exit', () => {
 | 
						|
    child.kill();
 | 
						|
  });
 | 
						|
  const code = await new Promise(f => child.on('close', f));
 | 
						|
  expect(code).toEqual(0);
 | 
						|
}
 |