Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Better error reporting for window.location probably changed (onbeforeunload handler) #173

Closed
zepumph opened this issue Apr 28, 2023 · 11 comments

Comments

@zepumph
Copy link
Member

zepumph commented Apr 28, 2023

From https://github.com/phetsims/special-ops/issues/234, @jonathanolson and I want to investigate improving the experience for this.

A few ideas:

  1. Report the whole console logging with the error
  2. See if console.error() occurs and treat those as Errors.
  3. See if the puppeteer or parent frame (sounds hard) can give us more information.
  4. See if failIfNoLoad helps here.
  5. We think that much of this is from a puppeteer client closing after 15 minutes, what if instead it was every hour or 2?
@zepumph
Copy link
Member Author

zepumph commented Apr 28, 2023

@jonathanolson any worries about the following patch?

Subject: [PATCH] I think we want this.
---
Index: js/server/Test.js
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/js/server/Test.js b/js/server/Test.js
--- a/js/server/Test.js	(revision 9d01c74386ae4318b820325b3bd7db0ab294786d)
+++ b/js/server/Test.js	(date 1682709370398)
@@ -202,7 +202,7 @@
     let url;
 
     if ( this.type === 'sim-test' ) {
-      url = `sim-test.html?url=${encodeURIComponent( `${baseURL}/${this.url}` )}`;
+      url = `sim-test.html?failIfNoLoad&url=${encodeURIComponent( `${baseURL}/${this.url}` )}`;
 
       if ( this.queryParameters ) {
         url += `&simQueryParameters=${encodeURIComponent( this.queryParameters )}`;
@@ -215,7 +215,7 @@
       url = `pageload-test.html?url=${encodeURIComponent( `${baseURL}/${this.url}` )}`;
     }
     else if ( this.type === 'wrapper-test' ) {
-      url = `wrapper-test.html?url=${encodeURIComponent( `${baseURL}/${this.url}` )}`;
+      url = `wrapper-test.html?failIfNoLoad&url=${encodeURIComponent( `${baseURL}/${this.url}` )}`;
     }
     if ( this.testQueryParameters ) {
       url = `${url}&${this.testQueryParameters}`;

@zepumph
Copy link
Member Author

zepumph commented May 2, 2023

@jonathanolson and I talked about two more potential sources of this onbeforeunload error. Let's investigate both approaches.

@zepumph
Copy link
Member Author

zepumph commented May 2, 2023

This test shows that we are in fact not getting the onbeforeunload from puppeteer whatsoever:
puppeteerOnbeforeunloadTest.zip

It isn't until I add this patch that I begin receiving any onbeforeunload events both in the parent and in the iframe. So perhaps the puppeteer closing as the problem was a false assumption on my part.

Subject: [PATCH] do that unload
---
Index: js/common/browserPageLoad.js
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/js/common/browserPageLoad.js b/js/common/browserPageLoad.js
--- a/js/common/browserPageLoad.js	(revision f07ceb27412350e2c82214dd329f63c260d0f16f)
+++ b/js/common/browserPageLoad.js	(date 1683048882674)
@@ -108,7 +108,7 @@
       timeout: options.gotoTimeout
     } );
     const result = await promise;
-    !page.isClosed() && await page.close();
+    !page.isClosed() && await page.close( { runBeforeUnload: true } );
 
     // If we created a temporary browser, close it
     ownsBrowser && await browser.close();

zepumph added a commit to phetsims/joist that referenced this issue May 2, 2023
zepumph added a commit to phetsims/perennial that referenced this issue May 2, 2023
zepumph added a commit to phetsims/scenery that referenced this issue May 2, 2023
@zepumph
Copy link
Member Author

zepumph commented May 3, 2023

@zepumph
Copy link
Member Author

zepumph commented May 3, 2023

In 1117c60 I changed it so that by default we don't see window.location errors. Feel free to change the default of that error, but in general that seems like an error for you and me to note, and not any others.

@zepumph
Copy link
Member Author

zepumph commented May 10, 2023

We finally got our first logging from out new node client (#178):


buoyancy : pan-and-zoom-fuzz : unbuilt
http://127.0.0.1/continuous-testing/ct-snapshots/1683757090083/buoyancy/buoyancy_en.html?continuousTest=%7B%22test%22%3A%5B%22buoyancy%22%2C%22pan-and-zoom-fuzz%22%2C%22unbuilt%22%5D%2C%22snapshotName%22%3A%22snapshot-1683757090083%22%2C%22timestamp%22%3A1683757673160%7D&brand=phet&ea&fuzz&fuzzPointers=2&supportsPanAndZoom=true
Query: brand=phet&ea&fuzz&fuzzPointers=2&supportsPanAndZoom=true
Unloaded frame before complete, window.location probably changed
[URL] http://127.0.0.1/continuous-testing/aqua/html/sim-test.html?url=..%2F..%2Fct-snapshots%2F1683757090083%2Fbuoyancy%2Fbuoyancy_en.html&simQueryParameters=brand%3Dphet%26ea%26fuzz%26fuzzPointers%3D2%26supportsPanAndZoom%3Dtrue&testInfo=%7B%22test%22%3A%5B%22buoyancy%22%2C%22pan-and-zoom-fuzz%22%2C%22unbuilt%22%5D%2C%22snapshotName%22%3A%22snapshot-1683757090083%22%2C%22timestamp%22%3A1683757673160%7D
[NAVIGATED] http://127.0.0.1/continuous-testing/aqua/html/sim-test.html?url=..%2F..%2Fct-snapshots%2F1683757090083%2Fbuoyancy%2Fbuoyancy_en.html&simQueryParameters=brand%3Dphet%26ea%26fuzz%26fuzzPointers%3D2%26supportsPanAndZoom%3Dtrue&testInfo=%7B%22test%22%3A%5B%22buoyancy%22%2C%22pan-and-zoom-fuzz%22%2C%22unbuilt%22%5D%2C%22snapshotName%22%3A%22snapshot-1683757090083%22%2C%22timestamp%22%3A1683757673160%7D
[NAVIGATED] about:blank
[NAVIGATED] http://127.0.0.1/continuous-testing/ct-snapshots/1683757090083/buoyancy/buoyancy_en.html?continuousTest=%7B%22test%22%3A%5B%22buoyancy%22%2C%22pan-and-zoom-fuzz%22%2C%22unbuilt%22%5D%2C%22snapshotName%22%3A%22snapshot-1683757090083%22%2C%22timestamp%22%3A1683757673160%7D&brand=phet&ea&fuzz&fuzzPointers=2&supportsPanAndZoom=true
[CONSOLE] enabling assert
[CONSOLE] WebGL: INVALID_OPERATION: useProgram: program not valid
[CONSOLE] WebGL: INVALID_OPERATION: useProgram: program not valid
[CONSOLE] WebGL: INVALID_OPERATION: useProgram: program not valid
[CONSOLE] WebGL: INVALID_OPERATION: useProgram: program not valid
[CONSOLE] WebGL: INVALID_OPERATION: drawArrays: no valid shader program in use
[CONSOLE] WebGL: INVALID_OPERATION: useProgram: program not valid
[CONSOLE] WebGL: INVALID_OPERATION: drawArrays: no valid shader program in use
[CONSOLE] WebGL: INVALID_OPERATION: useProgram: program not valid
[CONSOLE] WebGL: INVALID_OPERATION: drawArrays: no valid shader program in use
[CONSOLE] WebGL: INVALID_OPERATION: useProgram: program not valid
[CONSOLE] WebGL: INVALID_OPERATION: drawArrays: no valid shader program in use
[CONSOLE] WebGL: INVALID_OPERATION: drawArrays: no valid shader program in use
[CONSOLE] WebGL: INVALID_OPERATION: useProgram: program not valid
[CONSOLE] WebGL: INVALID_OPERATION: drawArrays: no valid shader program in use
[CONSOLE] WebGL: INVALID_OPERATION: useProgram: program not valid
[CONSOLE] WebGL: INVALID_OPERATION: drawArrays: no valid shader program in use
[CONSOLE] WebGL: INVALID_OPERATION: useProgram: program not valid
[CONSOLE] WebGL: INVALID_OPERATION: drawArrays: no valid shader program in use
[CONSOLE] WebGL: INVALID_OPERATION: useProgram: program not valid
[CONSOLE] WebGL: INVALID_OPERATION: drawArrays: no valid shader program in use
[CONSOLE] WebGL: INVALID_OPERATION: useProgram: program not valid
[CONSOLE] WebGL: INVALID_OPERATION: drawArrays: no valid shader program in use
[CONSOLE] WebGL: INVALID_OPERATION: useProgram: program not valid
[CONSOLE] WebGL: INVALID_OPERATION: drawArrays: no valid shader program in use
[CONSOLE] WebGL: INVALID_OPERATION: useProgram: program not valid
[CONSOLE] WebGL: INVALID_OPERATION: drawArrays: no valid shader program in use
[CONSOLE] WebGL: INVALID_OPERATION: useProgram: program not valid
[CONSOLE] WebGL: INVALID_OPERATION: drawArrays: no valid shader program in use
[CONSOLE] WebGL: INVALID_OPERATION: drawArrays: no valid shader program in use
[CONSOLE] WebGL: INVALID_OPERATION: useProgram: program not valid
[CONSOLE] WebGL: INVALID_OPERATION: drawArrays: no valid shader program in use
[CONSOLE] WebGL: INVALID_OPERATION: drawArrays: no valid shader program in use
[CONSOLE] WebGL: INVALID_OPERATION: useProgram: program not valid
[CONSOLE] WebGL: INVALID_OPERATION: drawArrays: no valid shader program in use
[CONSOLE] WebGL: INVALID_OPERATION: drawArrays: no valid shader program in use
[CONSOLE] WebGL: INVALID_OPERATION: useProgram: program not valid
[CONSOLE] WebGL: INVALID_OPERATION: drawArrays: no valid shader program in use
[CONSOLE] WebGL: INVALID_OPERATION: useProgram: program not valid
[CONSOLE] WebGL: INVALID_OPERATION: drawArrays: no valid shader program in use
[CONSOLE] WebGL: INVALID_OPERATION: drawArrays: no valid shader program in use
[CONSOLE] WebGL: INVALID_OPERATION: useProgram: program not valid
[CONSOLE] WebGL: INVALID_OPERATION: drawArrays: no valid shader program in use
[CONSOLE] WebGL: CONTEXT_LOST_WEBGL: loseContext: context lost
[CONSOLE] WebGL: CONTEXT_LOST_WEBGL: loseContext: context lost
[CONSOLE] WebGL: CONTEXT_LOST_WEBGL: loseContext: context lost
[CONSOLE] WebGL: CONTEXT_LOST_WEBGL: loseContext: context lost
[CONSOLE] continuous-test-load
[CONSOLE] THREE.WebGLRenderer: Context Lost.
[CONSOLE] THREE.WebGLRenderer: Context Lost.
[CONSOLE] THREE.WebGLRenderer: Context Lost.
[CONSOLE] THREE.WebGLRenderer: Context Lost.
[CONSOLE] continuous-test-unload

id: "Sparky Node Puppeteer"


density : fuzz : unbuilt : listenerOrderRandom
http://127.0.0.1/continuous-testing/ct-snapshots/1683755010459/density/density_en.html?continuousTest=%7B%22test%22%3A%5B%22density%22%2C%22fuzz%22%2C%22unbuilt%22%2C%22listenerOrderRandom%22%5D%2C%22snapshotName%22%3A%22snapshot-1683755010459%22%2C%22timestamp%22%3A1683755709765%7D&brand=phet&ea&fuzz&listenerOrder=random
Query: brand=phet&ea&fuzz&listenerOrder=random
Unloaded frame before complete, window.location probably changed
[URL] http://127.0.0.1/continuous-testing/aqua/html/sim-test.html?url=..%2F..%2Fct-snapshots%2F1683755010459%2Fdensity%2Fdensity_en.html&simQueryParameters=brand%3Dphet%26ea%26fuzz%26listenerOrder%3Drandom&testInfo=%7B%22test%22%3A%5B%22density%22%2C%22fuzz%22%2C%22unbuilt%22%2C%22listenerOrderRandom%22%5D%2C%22snapshotName%22%3A%22snapshot-1683755010459%22%2C%22timestamp%22%3A1683755709765%7D
[NAVIGATED] http://127.0.0.1/continuous-testing/aqua/html/sim-test.html?url=..%2F..%2Fct-snapshots%2F1683755010459%2Fdensity%2Fdensity_en.html&simQueryParameters=brand%3Dphet%26ea%26fuzz%26listenerOrder%3Drandom&testInfo=%7B%22test%22%3A%5B%22density%22%2C%22fuzz%22%2C%22unbuilt%22%2C%22listenerOrderRandom%22%5D%2C%22snapshotName%22%3A%22snapshot-1683755010459%22%2C%22timestamp%22%3A1683755709765%7D
[NAVIGATED] about:blank
[NAVIGATED] http://127.0.0.1/continuous-testing/ct-snapshots/1683755010459/density/density_en.html?continuousTest=%7B%22test%22%3A%5B%22density%22%2C%22fuzz%22%2C%22unbuilt%22%2C%22listenerOrderRandom%22%5D%2C%22snapshotName%22%3A%22snapshot-1683755010459%22%2C%22timestamp%22%3A1683755709765%7D&brand=phet&ea&fuzz&listenerOrder=random
[CONSOLE] enabling assert
[CONSOLE] listenerOrder random seed: 382912
[CONSOLE] WebGL: INVALID_OPERATION: useProgram: program not valid
[CONSOLE] WebGL: INVALID_OPERATION: useProgram: program not valid
[CONSOLE] WebGL: INVALID_OPERATION: drawArrays: no valid shader program in use
[CONSOLE] WebGL: INVALID_OPERATION: useProgram: program not valid
[CONSOLE] WebGL: INVALID_OPERATION: drawArrays: no valid shader program in use
[CONSOLE] WebGL: INVALID_OPERATION: useProgram: program not valid
[CONSOLE] WebGL: INVALID_OPERATION: drawArrays: no valid shader program in use
[CONSOLE] WebGL: INVALID_OPERATION: drawArrays: no valid shader program in use
[CONSOLE] WebGL: INVALID_OPERATION: drawArrays: no valid shader program in use
[CONSOLE] WebGL: INVALID_OPERATION: drawArrays: no valid shader program in use
[CONSOLE] WebGL: INVALID_OPERATION: drawArrays: no valid shader program in use
[CONSOLE] WebGL: INVALID_OPERATION: drawArrays: no valid shader program in use
[CONSOLE] WebGL: INVALID_OPERATION: useProgram: program not valid
[CONSOLE] WebGL: INVALID_OPERATION: drawArrays: no valid shader program in use
[CONSOLE] WebGL: INVALID_OPERATION: useProgram: program not valid
[CONSOLE] WebGL: INVALID_OPERATION: drawArrays: no valid shader program in use
[CONSOLE] WebGL: INVALID_OPERATION: drawArrays: no valid shader program in use
[CONSOLE] WebGL: INVALID_OPERATION: drawArrays: no valid shader program in use
[CONSOLE] WebGL: INVALID_OPERATION: drawArrays: no valid shader program in use
[CONSOLE] WebGL: INVALID_OPERATION: drawArrays: no valid shader program in use
[CONSOLE] WebGL: INVALID_OPERATION: useProgram: program not valid
[CONSOLE] WebGL: INVALID_OPERATION: drawArrays: no valid shader program in use
[CONSOLE] WebGL: CONTEXT_LOST_WEBGL: loseContext: context lost
[CONSOLE] WebGL: CONTEXT_LOST_WEBGL: loseContext: context lost
[CONSOLE] WebGL: CONTEXT_LOST_WEBGL: loseContext: context lost
[CONSOLE] continuous-test-load
[CONSOLE] THREE.WebGLRenderer: Context Lost.
[CONSOLE] THREE.WebGLRenderer: Context Lost.
[CONSOLE] THREE.WebGLRenderer: Context Lost.
[CONSOLE] continuous-test-unload

id: "Sparky Node Puppeteer"
Snapshot from 5/10/2023, 3:43:30 PM

@zepumph
Copy link
Member Author

zepumph commented May 10, 2023

@jonathanolson, I don't see a lot from the above. Do you think it is related to the "Context Lost" logging? Would you like to put a couple more logs in here to try to understand the problem a bit more?

@zepumph
Copy link
Member Author

zepumph commented May 11, 2023

phetsims/mobius@d38c78d will most likely fix the ThreeJS WebGL for density and buoyancy. Those are the only window.location errors that we are seeing on the new Node client, which feels like a good reason to go all in on it over in #178.

@zepumph
Copy link
Member Author

zepumph commented May 11, 2023

  • Clean up ?showBeforeUnloadErrors in the report.

@zepumph
Copy link
Member Author

zepumph commented May 12, 2023

There have been no window.location errors on the new node client since phetsims/mobius@d38c78d.

zepumph added a commit that referenced this issue May 12, 2023
@zepumph
Copy link
Member Author

zepumph commented May 12, 2023

Alright! the gross hacky ?showBeforeUnloadErrors is gone now. Closing

@zepumph zepumph closed this as completed May 12, 2023
zepumph pushed a commit to phetsims/mobius that referenced this issue Oct 19, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants