module.exports = async function getPerfRegressions() { const browser = await require('puppeteer').launch({ headless: true }); let page = await browser.newPage(); // get perf numbers for existing code await page.goto(urlForMaster); const perfAveragesNow = await runAvailableScenarios(page, componentCount, iterations); logger.info(perfAveragesNow); // get perf numbers for new code await page.goto(urlFromDeployJob); const perfAveragesNew = await runAvailableScenarios(page, componentCount, iterations); logger.info(perfAveragesNew); // Clean up await browser.close(); // Output comment blob and status as task variables const comment = createBlobFromResults({ now: perfAveragesNow, new: perfAveragesNew }); // TODO: determine status according to perf numbers const status = 'success'; logger.info(`Perf evaluation status: ${status}`); logger.info(`Writing comment to file:\n${comment}`); // Write results to file require('fs').writeFileSync(require('path').join('apps/perf-test/dist', 'perfCounts.txt'), comment); console.log(`echo ##vso[task.setvariable variable=PerfCommentFilePath;]apps/perf-test/dist/perfCounts.txt`); console.log(`echo ##vso[task.setvariable variable=PerfCommentStatus;]${status}`); };
/** * If a file has `@codepen` at the beginning, transform it into a codepen-friendly .Codepen.txt * output to the project's lib folder. * * @param {string} file - Path to the file * @param {Function} callback - Callback when done */ function transformFile(file, callback) { if (readFileStart(file, 150).includes('@codepen')) { let fileSource = fs.readFileSync(file).toString(); const exampleName = path.basename(file, '.tsx'); // extract the name of the component (relies on component/examples/examplefile.tsx structure) const transformResult = transformer(fileSource); const dirPath = path.dirname(path.dirname(file)).replace(/((\b)src(\b))(?!.*\1)/, '$2lib/codepen$3'); if (!fs.existsSync(dirPath)) { fs.mkdirpSync(dirPath); } const outPath = path.join(dirPath, exampleName + '.Codepen.txt'); logger.info('Writing codepen: ' + outPath); fs.writeFileSync(outPath, transformResult); } callback(); }
? () => { logger.info(`${name} task is disabled in package.json`); }