Scaffold & RemoteTranslate: Improve defer handling

- Use extracted delay routine
- Pass defer into newTest()
This commit is contained in:
Abe Jellinek 2025-01-24 12:08:20 -05:00
parent 5f983d71c1
commit 3a816fad55
3 changed files with 10 additions and 20 deletions

View file

@ -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);

View file

@ -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<Object | null>} 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 });
}
/**

View file

@ -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,