fix(extensions): try harder to avoid Scratch Link init in non-browser environments

Prior to this change, the Scratch Link init would fail in JSDOM. That means it fails in the
scratch-gui integration tests, so that's no good...
This commit is contained in:
Christopher Willis-Ford 2022-08-16 23:42:55 -07:00
parent e289448cd3
commit 56dd49aaed

View file

@ -1444,8 +1444,17 @@ class Runtime extends EventEmitter {
*/
_initScratchLink () {
/* global globalThis */
// Check if we're actually in a browser
if (globalThis.document && document.getElementById) {
// Check that we're actually in a real browser, not Node.js or JSDOM, and we have a valid-looking origin.
if (globalThis.document &&
globalThis.document.getElementById &&
globalThis.origin &&
globalThis.origin !== 'null' &&
globalThis.navigator &&
globalThis.navigator.userAgent &&
globalThis.navigator.userAgent.includes &&
!globalThis.navigator.userAgent.includes('Node.js') &&
!globalThis.navigator.userAgent.includes('jsdom')
) {
// Create a script tag for the Scratch Link browser extension, unless one already exists
const scriptElement = document.getElementById('scratch-link-extension-script');
if (!scriptElement) {