diff --git a/chrome/content/scaffold/scaffold.js b/chrome/content/scaffold/scaffold.js index 7490d85627..e87e8b4554 100644 --- a/chrome/content/scaffold/scaffold.js +++ b/chrome/content/scaffold/scaffold.js @@ -2113,20 +2113,6 @@ var Scaffold = new function () { requireSuccessfulStatus: true }); - if (test.defer) { - _logOutput("Waiting " + (Zotero_TranslatorTester.DEFER_DELAY / 1000) - + " second(s) for page content to settle"); - await Zotero.Promise.delay(Zotero_TranslatorTester.DEFER_DELAY); - } - else { - // Wait just a bit for things to settle - await Zotero.Promise.delay(1000); - } - - if (browser.currentURI.spec != test.url) { - _logOutput("Page URL differs from test. Will be updated. " + browser.currentURI.spec); - } - let translate = new RemoteTranslate({ disableErrorReporting: true }); try { await translate.setBrowser(browser); @@ -2136,10 +2122,11 @@ var Scaffold = new function () { translate.setHandler("error", _error); translate.setHandler("newTestDetectionFailed", _confirmCreateExpectedFailTest); - let newTest = await translate.newTest(); + let newTest = await translate.newTest({ defer: test.defer }); newTest = _sanitizeItemsInTest(newTest); - if (test.defer) { - newTest.defer = true; + + if (newTest.url != test.url) { + _logOutput("Page URL differs from test. Will be updated. " + newTest.url); } this.newTests.push(newTest); diff --git a/chrome/content/zotero/RemoteTranslate.jsm b/chrome/content/zotero/RemoteTranslate.jsm index dbfcc5980f..4430f42fbf 100644 --- a/chrome/content/zotero/RemoteTranslate.jsm +++ b/chrome/content/zotero/RemoteTranslate.jsm @@ -248,11 +248,13 @@ class RemoteTranslate { /** * Create a test on the browser's current page. * + * @param {Object} [testInit] + * @param {boolean | number} [testInit.defer] * @return {Promise} Resolves to the created test object (null on error) */ - newTest() { + newTest(testInit) { let actor = this._browser.browsingContext.currentWindowGlobal.getActor("Translation"); - return actor.sendQuery("newTest", { translator: this._translator, id: this._id }); + return actor.sendQuery("newTest", { translator: this._translator, testInit, id: this._id }); } /** diff --git a/chrome/content/zotero/actors/TranslationChild.jsm b/chrome/content/zotero/actors/TranslationChild.jsm index 1a19cf68a6..5454004f09 100644 --- a/chrome/content/zotero/actors/TranslationChild.jsm +++ b/chrome/content/zotero/actors/TranslationChild.jsm @@ -115,7 +115,7 @@ class TranslationChild extends JSWindowActorChild { } } case 'newTest': { - let { translator, id } = data; + let { translator, testInit, id } = data; let { Zotero_TranslatorTester } = this._sandbox; try { let tester = new Zotero_TranslatorTester( @@ -124,6 +124,7 @@ class TranslationChild extends JSWindowActorChild { (_tester, obj) => this._debug(id, obj), this._makeTranslatorProvider(id), ); + await tester.waitForDeferDelay(testInit?.defer); return await new Promise((resolve) => { tester.newTest( this.contentWindow.document,