chrome-test.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  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. const html = await page.content();
  12. if (inspect(html).indexOf('jupyter-config-data') === -1) {
  13. console.error('Error loading JupyterLab page:');
  14. console.error(html);
  15. }
  16. const el = await page.waitForSelector('#browserTest', { timeout: 100000 });
  17. console.log('Waiting for application to start...');
  18. let testError = null;
  19. try {
  20. await page.waitForSelector('.completed');
  21. } catch (e) {
  22. testError = e;
  23. }
  24. const textContent = await el.getProperty('textContent');
  25. const errors = JSON.parse(await textContent.jsonValue());
  26. for (let error of errors) {
  27. console.error(`Parsed an error from text content: ${error.message}`, error);
  28. }
  29. await browser.close();
  30. if (testError) {
  31. throw testError;
  32. }
  33. console.info('Chrome test complete');
  34. }
  35. // Stop the process if an error is raised in the async function.
  36. process.on('unhandledRejection', up => {
  37. throw up;
  38. });
  39. main();