From cf0b84a76402e90045880063d692d5934d4c2812 Mon Sep 17 00:00:00 2001 From: Daniel X Moore Date: Tue, 5 Apr 2022 12:11:09 -0700 Subject: [PATCH 1/4] Report browser test errors --- Cakefile | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/Cakefile b/Cakefile index 6349da85cb..d82bea94d8 100644 --- a/Cakefile +++ b/Cakefile @@ -531,23 +531,26 @@ task 'test:browser', 'run the test suite against the modern browser compiler in puppeteer = require 'puppeteer' browser = page = result = null puppeteer.launch() - .then((browserHandle) -> + .then (browserHandle) -> browser = browserHandle browser.newPage() - ).then((pageHandle) -> + .then (pageHandle) -> page = pageHandle page.goto 'http://localhost:8080/' - ).then(-> + .then -> page.waitForSelector '#result', visible: yes polling: 'mutation' - ).then((element) -> + timeout: 60000 + .then (element) -> page.evaluate ((el) => el.textContent), element - ).then((elementText) -> + .then (elementText) -> result = elementText - ).finally(-> + .catch (e) -> + log e, red + .finally -> browser.close() - ).finally -> + .finally -> server.close() if result and not result.includes('failed') log result, green From afeb66512dfb9564227057da6df06e5f9d0102be Mon Sep 17 00:00:00 2001 From: Daniel X Moore Date: Tue, 5 Apr 2022 15:28:44 -0700 Subject: [PATCH 2/4] Updated `cake test:browser` to use `await` Removed comment and check for older versions of Node as we no longer support them anymore. --- Cakefile | 53 +++++++++++++++++++---------------------------------- 1 file changed, 19 insertions(+), 34 deletions(-) diff --git a/Cakefile b/Cakefile index d82bea94d8..dfc641432e 100644 --- a/Cakefile +++ b/Cakefile @@ -499,17 +499,6 @@ task 'test', 'run the CoffeeScript language test suite', -> task 'test:browser', 'run the test suite against the modern browser compiler in a headless browser', -> - # This test uses Puppeteer to launch headless Chrome to test the ES module - # version of the browser compiler. There’s no reason to run this test in old - # versions of Node (the runtime is the headless Chrome browser, not Node), - # and Puppeteer 3 only supports Node >= 10.18.1, so limit this test to those - # versions. The code below uses `Promise.prototype.finally` because the - # CoffeeScript codebase currently maintains compatibility with Node 6, which - # did not support `async`/`await` syntax. Even though this test doesn’t run - # in Node 6, it needs to still _parse_ in Node 6 so that this file can load. - [major, minor, build] = process.versions.node.split('.').map (n) -> parseInt(n, 10) - return if major < 10 or (major is 10 and minor < 18) or (major is 10 and minor is 18 and build < 1) - # Create very simple web server to serve the two files we need. http = require 'http' serveFile = (res, fileToServe, mimeType) -> @@ -529,34 +518,30 @@ task 'test:browser', 'run the test suite against the modern browser compiler in server.listen 8080 puppeteer = require 'puppeteer' - browser = page = result = null - puppeteer.launch() - .then (browserHandle) -> - browser = browserHandle - browser.newPage() - .then (pageHandle) -> - page = pageHandle - page.goto 'http://localhost:8080/' - .then -> - page.waitForSelector '#result', + browser = await puppeteer.launch() + page = await browser.newPage() + result = null + + try + await page.goto 'http://localhost:8080/' + + element = await page.waitForSelector '#result', visible: yes polling: 'mutation' timeout: 60000 - .then (element) -> - page.evaluate ((el) => el.textContent), element - .then (elementText) -> - result = elementText - .catch (e) -> + + result = await page.evaluate ((el) => el.textContent), element + catch e log e, red - .finally -> - browser.close() - .finally -> + finally + try browser.close() server.close() - if result and not result.includes('failed') - log result, green - else - log result, red - process.exit 1 + + if result and not result.includes('failed') + log result, green + else + log result, red + process.exit 1 task 'test:browser:node', 'run the test suite against the legacy browser compiler in Node', -> From c6ed6e7413feda86980c254e77ce18ad07487395 Mon Sep 17 00:00:00 2001 From: Daniel X Moore Date: Tue, 5 Apr 2022 15:48:02 -0700 Subject: [PATCH 3/4] Wait for server to listen --- Cakefile | 50 +++++++++++++++++++++++++------------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/Cakefile b/Cakefile index dfc641432e..dfed7688e1 100644 --- a/Cakefile +++ b/Cakefile @@ -515,33 +515,33 @@ task 'test:browser', 'run the test suite against the modern browser compiler in else res.statusCode = 404 res.end() - server.listen 8080 - puppeteer = require 'puppeteer' - browser = await puppeteer.launch() - page = await browser.newPage() - result = null + server.listen 8080, -> + puppeteer = require 'puppeteer' + browser = await puppeteer.launch() + page = await browser.newPage() + result = null - try - await page.goto 'http://localhost:8080/' - - element = await page.waitForSelector '#result', - visible: yes - polling: 'mutation' - timeout: 60000 - - result = await page.evaluate ((el) => el.textContent), element - catch e - log e, red - finally - try browser.close() - server.close() - - if result and not result.includes('failed') - log result, green - else - log result, red - process.exit 1 + try + await page.goto 'http://localhost:8080/' + + element = await page.waitForSelector '#result', + visible: yes + polling: 'mutation' + timeout: 60000 + + result = await page.evaluate ((el) => el.textContent), element + catch e + log e, red + finally + try browser.close() + server.close() + + if result and not result.includes('failed') + log result, green + else + log result, red + process.exit 1 task 'test:browser:node', 'run the test suite against the legacy browser compiler in Node', -> From 47f8f2fc37633d8f328e26c9527cf35f8fa5d558 Mon Sep 17 00:00:00 2001 From: Daniel X Moore Date: Tue, 5 Apr 2022 15:53:31 -0700 Subject: [PATCH 4/4] Don't log 'null' if no result --- Cakefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cakefile b/Cakefile index dfed7688e1..7bf94eec30 100644 --- a/Cakefile +++ b/Cakefile @@ -520,7 +520,7 @@ task 'test:browser', 'run the test suite against the modern browser compiler in puppeteer = require 'puppeteer' browser = await puppeteer.launch() page = await browser.newPage() - result = null + result = "" try await page.goto 'http://localhost:8080/'