mathquill / mathquill

Easily type math in your webapp
http://mathquill.com
Mozilla Public License 2.0
2.61k stars 687 forks source link

Fix npm install race in CI #1027

Closed jwmerrill closed 8 months ago

jwmerrill commented 9 months ago

MathQuill's CI system starts a server in the background by running make server. Previously, this would run npm install, which could race later ci steps that were attempting to use node modules.

Fix this by adding a NO_INSTALL environment variable that tells the server not to automatically install npm dependencies.

jwmerrill commented 9 months ago

This gets the CI build to run successfully, but I'm noticing that it actually is timing out without getting any test results.

Opening the "unit tests in the browser" section in the CI run shows

get http://localhost:8000/test/unit.html?xunit=true
setAsyncScriptTimeout(2**31 - 1)
ERROR: {
  "message": "[safeExecuteAsync(\"window.xunitCallback = arguments[0];\")] Error response status: 21, , Timeout - An operation did not complete before its timeout expired. Selenium error: Automation Server Error -- Selenium didn't complete your last command on time.\nFor help, please check https://docs.saucelabs.com/dev/error-messages",
  "status": 21,
  "cause": {
    "status": 21,
    "sessionId": "e4d1c0c884044cecbbe9fedfb19555f9",
    "value": {
      "message": "Automation Server Error -- Selenium didn't complete your last command on time.\nFor help, please check https://docs.saucelabs.com/dev/error-messages"
    }
  },
  "jsonwire-error": {
    "status": 21,
    "summary": "Timeout",
    "detail": "An operation did not complete before its timeout expired."
  }
}

I'm not sure how long this has been a problem. Unfortunately, we don't have a history of any CI runs that were successful and didn't have this problem.

jaltekruse commented 8 months ago

I'm not sure how long this has been a problem. Unfortunately, we don't have a history of any CI runs that were successful and didn't have this problem.

I did check one of the builds last week to make sure we weren't ignoring a testless build, and I did see one with tests listed. https://app.circleci.com/pipelines/github/mathquill/mathquill/105/workflows/6ad19848-5aa1-4f7c-92a8-cd243519ea3e/jobs/663

get http://localhost:8000/test/unit.html?xunit=true
setAsyncScriptTimeout(2**31 - 1)
waited for xunitCallback()
Got results XML (442 lines):
<testsuite name="Mocha Tests" tests="439" failures="0" errors="0" skipped="0" timestamp="Wed, 27 Sep 2023 17:49:58 GMT" time="4.685">
<testcase classname="autoOperatorNames" name="simple LaTeX parsing, typing" time="0.193"/>
<testcase classname="autoOperatorNames" name="text() output" time="0.008"/>
<testcase classname="autoOperatorNames" name="deleting" time="0.021"/>
<testcase classname="autoOperatorNames override autoOperatorNames" name="basic" time="0.017"/>
<testcase classname="autoOperatorNames override autoOperatorNames" name="command contains non-letters" time="0"/>
<testcase classname="autoOperatorNames override autoOperatorNames" name="command length less than 2" time="0"/>
<testcase classname="autoOperatorNames override autoOperatorNames command list not perfectly space-delimited" name="double space" time="0.001"/>
<testcase classname="autoOperatorNames override autoOperatorNames command list not perfectly space-delimited" name="leading space" time="0"/>
<testcase classname="autoOperatorNames override autoOperatorNames command list not perfectly space-delimited" name="trailing space" time="0"/>
...
Wrote to /tmp/circleci-test-results/test-results.xml
0 failures, 0 errors
Archiving the following test results
  * /tmp/circleci-test-results/test-results.xml

Total size uploaded: 6.3 KiB
nedredmond commented 8 months ago

M-E-R-G-E-I-T-- Merge it! 🙌 I'm a powerless cheerleader.

jwmerrill commented 8 months ago

This gets the CI build to run successfully, but I'm noticing that it actually is timing out without getting any test results.

This was fixed by https://github.com/mathquill/mathquill/pull/1030