mirror of
https://github.com/zebrajr/react.git
synced 2025-12-07 00:20:28 +01:00
79 lines
1.7 KiB
JavaScript
79 lines
1.7 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
'use strict';
|
|
|
|
const {exec} = require('child-process-promise');
|
|
const {join} = require('path');
|
|
const puppeteer = require('puppeteer');
|
|
const server = require('pushstate-server');
|
|
const theme = require('../theme');
|
|
const {logPromise} = require('../utils');
|
|
|
|
const validate = async () => {
|
|
const browser = await puppeteer.launch();
|
|
const page = await browser.newPage();
|
|
|
|
await page.goto('http://localhost:9000/fixtures/packaging');
|
|
|
|
try {
|
|
return await page.evaluate(() => {
|
|
const iframes = document.querySelectorAll('iframe');
|
|
|
|
if (iframes.length === 0) {
|
|
return 'No iframes were found.';
|
|
}
|
|
|
|
for (let i = 0; i < iframes.length; i++) {
|
|
const iframe = iframes[i];
|
|
// Don't include the <script> Babel tag
|
|
const container = iframe.contentDocument.body.getElementsByTagName(
|
|
'div'
|
|
)[0];
|
|
if (container.textContent !== 'Hello World!') {
|
|
return `Unexpected fixture content, "${container.textContent}"`;
|
|
}
|
|
}
|
|
|
|
return null;
|
|
});
|
|
} finally {
|
|
await browser.close();
|
|
}
|
|
};
|
|
|
|
const run = async ({cwd}) => {
|
|
await logPromise(
|
|
exec('node build-all.js', {cwd: join(cwd, 'fixtures/packaging')}),
|
|
'Generating "packaging" fixture',
|
|
20000 // This takes roughly 20 seconds
|
|
);
|
|
|
|
let errorMessage;
|
|
let response;
|
|
|
|
try {
|
|
response = server.start({
|
|
port: 9000,
|
|
directory: cwd,
|
|
});
|
|
|
|
errorMessage = await logPromise(
|
|
validate(),
|
|
'Verifying "packaging" fixture'
|
|
);
|
|
} finally {
|
|
response.close();
|
|
}
|
|
|
|
if (errorMessage) {
|
|
console.error(
|
|
theme.error('✗'),
|
|
'Verifying "packaging" fixture\n ',
|
|
theme.error(errorMessage)
|
|
);
|
|
process.exit(1);
|
|
}
|
|
};
|
|
|
|
module.exports = run;
|