chrome-test.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. const puppeteer = require('puppeteer');
  2. const inspect = require('util').inspect;
  3. const URL = process.argv[2];
  4. async function main() {
  5. /* eslint-disable no-console */
  6. console.info('Starting Chrome Headless');
  7. const browser = await puppeteer.launch({ args: ['--no-sandbox'] });
  8. const page = await browser.newPage();
  9. console.info('Navigating to page:', URL);
  10. await page.goto(URL);
  11. console.info('Waiting for page to load...');
  12. const html = await page.content();
  13. if (inspect(html).indexOf('jupyter-config-data') === -1) {
  14. console.error('Error loading JupyterLab page:');
  15. console.error(html);
  16. }
  17. const el = await page.waitForSelector('#browserTest', { timeout: 100000 });
  18. console.log('Waiting for application to start...');
  19. let testError = null;
  20. try {
  21. await page.waitForSelector('.completed');
  22. } catch (e) {
  23. testError = e;
  24. }
  25. const textContent = await el.getProperty('textContent');
  26. const errors = JSON.parse(await textContent.jsonValue());
  27. for (let error of errors) {
  28. console.error(`Parsed an error from text content: ${error.message}`, error);
  29. }
  30. await browser.close();
  31. if (testError) {
  32. throw testError;
  33. }
  34. console.info('Chrome test complete');
  35. }
  36. // Stop the process if an error is raised in the async function.
  37. process.on('unhandledRejection', up => {
  38. throw up;
  39. });
  40. main();