chrome-example-test.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. const puppeteer = require('puppeteer');
  2. const inspect = require('util').inspect;
  3. const URL = process.argv[2];
  4. async function main() {
  5. console.info('Starting Chrome Headless');
  6. const browser = await puppeteer.launch({ args: ['--no-sandbox'] });
  7. const page = await browser.newPage();
  8. console.info('Navigating to page:', URL);
  9. await page.goto(URL);
  10. console.info('Waiting for page to load...');
  11. errored = false;
  12. async function handleMessage(msg) {
  13. const text = msg.text();
  14. console.log(`>> ${text}`);
  15. if (msg.type === 'error') {
  16. errored = true;
  17. }
  18. const lower = text.toLowerCase();
  19. if (lower === 'example started!' || lower === 'test complete!') {
  20. await browser.close();
  21. if (errored) {
  22. throw Error('Example test failed!');
  23. }
  24. console.info('Example test complete!');
  25. return;
  26. }
  27. }
  28. function handleError(err) {
  29. console.error(err);
  30. errored = true;
  31. }
  32. page.on('console', handleMessage);
  33. page.on('error', handleError);
  34. const html = await page.content();
  35. if (inspect(html).indexOf('jupyter-config-data') === -1) {
  36. console.error('Error loading JupyterLab page:');
  37. console.error(html);
  38. }
  39. console.info('Page loaded');
  40. }
  41. // Stop the process if an error is raised in the async function.
  42. process.on('unhandledRejection', up => {
  43. throw up;
  44. });
  45. main();