react/scripts/release/shared-commands/test-tracing-fixture.js

59 lines
1.3 KiB
JavaScript

#!/usr/bin/env node
'use strict';
const {join} = require('path');
const puppeteer = require('puppeteer');
const theme = require('../theme');
const {logPromise} = require('../utils');
const validate = async ({cwd}) => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto(
'file://' + join(cwd, 'fixtures/tracing/index.html?puppeteer=true')
);
try {
return await page.evaluate(() => {
const button = document.getElementById('run-test-button');
button.click();
const items = document.querySelectorAll('[data-value]');
if (items.length === 0) {
return 'No results were found.';
}
for (let i = 0; i < items.length; i++) {
const item = items[i];
if (item.getAttribute('data-value') !== 'All checks pass') {
return `Unexpected result, "${item.getAttribute('data-value')}"`;
}
}
return null;
});
} finally {
await browser.close();
}
};
const run = async ({cwd}) => {
const errorMessage = await logPromise(
validate({cwd}),
'Verifying "scheduler/tracing" fixture'
);
if (errorMessage) {
console.error(
theme.error('✗'),
'Verifying "scheduler/tracing" fixture\n ',
theme.error(errorMessage)
);
process.exit(1);
}
};
module.exports = run;