mozilla / geckodriver

WebDriver for Firefox
https://firefox-source-docs.mozilla.org/testing/geckodriver/
Mozilla Public License 2.0
7.11k stars 1.52k forks source link

document.readyState always giving complete even when browser is in loading state #2194

Closed BhavikaTibrewal closed 1 week ago

BhavikaTibrewal commented 3 weeks ago

System

Description

In chrome we see the code waits at page.execute for the page loading state to resolve and then proceeds but in case of Firefox the code proceed even when the browser is still in loading state as we got document.readyState === "complete"

Testcase

import Nightwatch from 'nightwatch';
import chromeDefaultArgs from "./chromeDefaultArgs.js"

const currentTime = new Date();
const sessionName = `Selenium session at ${currentTime}`;
console.log(`currentTime: ${currentTime} and sessionName: ${sessionName}`);

const client = Nightwatch.createClient({
  headless: false,
  output: true,
  silent: true, // set to false to enable verbose logging
  browserName: 'firefox', // can be either: firefox, chrome, safari, or edge

  // set the global timeout to be used with waitFor commands and when retrying assertions/expects
  timeout: 10000,

  // set the current test environment from the nightwatch config
  // env: 'browserstack',

  // any additional capabilities needed
  desiredCapabilities: {  },

  globals: {},

  // when the test runner used supports running tests in parallel;
  // set to true if you need the webdriver port to be randomly generated
  parallel: false,

  // All other Nightwatch config settings can be overwritten here, such as:
  disable_colors: false
});

const page = await client.launchBrowser();

const url = '';

console.log(`visting url: ${url}`);

await page.url(url);

await page.execute(function () {
  let ele = document.querySelector('body > div > div > a:nth-child(5)');
  ele?.click();
});

console.log(`test completed, killing browser`);
await page.end();

Stacktrace

1723813046458   webdriver::server   DEBUG   -> GET /status 
1723813046458   webdriver::server   DEBUG   <- 200 OK {"value":{"message":"","ready":true}}
1723813046463   webdriver::server   DEBUG   -> POST /session {"capabilities":{"firstMatch":[{}],"alwaysMatch":{"browserName":"firefox","acceptInsecureCerts":true,"moz:fi ... ptions":{"args":[],"binary":"/Users/bhavika/.cache/selenium/firefox/mac-arm64/129.0.1/Firefox.app/Contents/MacOS/firefox"}}}}
1723813046463   geckodriver::capabilities   DEBUG   Trying to read firefox version from ini files
1723813046464   geckodriver::capabilities   DEBUG   Found version 129.0.1
1723813046465   mozrunner::runner   INFO    Running command: MOZ_CRASHREPORTER="1" MOZ_CRASHREPORTER_NO_REPORT="1" MOZ_CRASHREPORTER_SHUTDOWN="1" MOZ_NO_REMOTE="1" "/Use ... "--marionette" "-foreground" "-no-remote" "-profile" "/var/folders/37/j7lllbzd26x90lc1ddfj4k3h0000gn/T/rust_mozprofileIW2LE9"
1723813046466   geckodriver::marionette DEBUG   Waiting 60s to connect to browser on 127.0.0.1
1723813046466   geckodriver::browser    TRACE   Failed to open /var/folders/37/j7lllbzd26x90lc1ddfj4k3h0000gn/T/rust_mozprofileIW2LE9/MarionetteActivePort
1723813046466   geckodriver::marionette TRACE   Retrying in 100ms
1723813046571   geckodriver::browser    TRACE   Failed to open /var/folders/37/j7lllbzd26x90lc1ddfj4k3h0000gn/T/rust_mozprofileIW2LE9/MarionetteActivePort
1723813046571   geckodriver::marionette TRACE   Retrying in 100ms
console.warn: services.settings: Ignoring preference override of remote settings server
console.warn: services.settings: Allow by setting MOZ_REMOTE_SETTINGS_DEVTOOLS=1 in the environment
1723813046673   geckodriver::browser    TRACE   Failed to open /var/folders/37/j7lllbzd26x90lc1ddfj4k3h0000gn/T/rust_mozprofileIW2LE9/MarionetteActivePort
1723813046673   geckodriver::marionette TRACE   Retrying in 100ms
1723813046677   Marionette  INFO    Marionette enabled
1723813046677   RemoteAgent DEBUG   Setting recommended pref apz.content_response_timeout to 60000
1723813046677   RemoteAgent DEBUG   Setting recommended pref browser.contentblocking.introCount to 99
1723813046677   RemoteAgent DEBUG   Setting recommended pref browser.download.panel.shown to true
1723813046677   RemoteAgent DEBUG   Setting recommended pref browser.newtabpage.activity-stream.discoverystream.region-weather-config to 
1723813046677   RemoteAgent DEBUG   Setting recommended pref browser.newtabpage.activity-stream.newtabWallpapers.enabled to false
1723813046677   RemoteAgent DEBUG   Setting recommended pref browser.newtabpage.activity-stream.newtabWallpapers.v2.enabled to false
1723813046677   RemoteAgent DEBUG   Setting recommended pref browser.newtabpage.activity-stream.showSponsoredTopSites to false
1723813046677   RemoteAgent DEBUG   Setting recommended pref browser.newtabpage.enabled to false
1723813046678   RemoteAgent DEBUG   Setting recommended pref browser.pagethumbnails.capturing_disabled to true
1723813046678   RemoteAgent DEBUG   Setting recommended pref browser.region.network.url to 
1723813046678   RemoteAgent DEBUG   Setting recommended pref browser.safebrowsing.blockedURIs.enabled to false
1723813046678   RemoteAgent DEBUG   Setting recommended pref browser.safebrowsing.downloads.enabled to false
1723813046678   RemoteAgent DEBUG   Setting recommended pref browser.safebrowsing.malware.enabled to false
1723813046678   RemoteAgent DEBUG   Setting recommended pref browser.safebrowsing.phishing.enabled to false
1723813046678   RemoteAgent DEBUG   Setting recommended pref browser.search.update to false
1723813046678   RemoteAgent DEBUG   Setting recommended pref browser.startup.couldRestoreSession.count to -1
1723813046678   RemoteAgent DEBUG   Setting recommended pref browser.tabs.remote.unloadDelayMs to 0
1723813046678   RemoteAgent DEBUG   Setting recommended pref browser.tabs.unloadOnLowMemory to false
1723813046678   RemoteAgent DEBUG   Setting recommended pref browser.tabs.warnOnClose to false
1723813046678   RemoteAgent DEBUG   Setting recommended pref browser.tabs.warnOnCloseOtherTabs to false
1723813046678   RemoteAgent DEBUG   Setting recommended pref browser.tabs.warnOnOpen to false
1723813046678   RemoteAgent DEBUG   Setting recommended pref browser.toolbars.bookmarks.visibility to never
1723813046678   RemoteAgent DEBUG   Setting recommended pref browser.topsites.contile.enabled to false
1723813046678   RemoteAgent DEBUG   Setting recommended pref browser.usedOnWindows10.introURL to 
1723813046678   RemoteAgent DEBUG   Setting recommended pref browser.urlbar.merino.endpointURL to 
1723813046678   RemoteAgent DEBUG   Setting recommended pref browser.urlbar.suggest.searches to false
1723813046678   RemoteAgent DEBUG   Setting recommended pref datareporting.policy.dataSubmissionPolicyAccepted to false
1723813046678   RemoteAgent DEBUG   Setting recommended pref dom.disable_open_during_load to false
1723813046678   RemoteAgent DEBUG   Setting recommended pref dom.file.createInChild to true
1723813046678   RemoteAgent DEBUG   Setting recommended pref dom.input_events.security.minNumTicks to 0
1723813046678   RemoteAgent DEBUG   Setting recommended pref dom.input_events.security.minTimeElapsedInMS to 0
1723813046678   RemoteAgent DEBUG   Setting recommended pref dom.max_chrome_script_run_time to 0
1723813046678   RemoteAgent DEBUG   Setting recommended pref dom.max_script_run_time to 0
1723813046678   RemoteAgent DEBUG   Setting recommended pref dom.navigation.locationChangeRateLimit.count to 0
1723813046678   RemoteAgent DEBUG   Setting recommended pref dom.push.connection.enabled to false
1723813046678   RemoteAgent DEBUG   Setting recommended pref dom.screenorientation.allow-lock to true
1723813046678   RemoteAgent DEBUG   Setting recommended pref dom.successive_dialog_time_limit to 0
1723813046678   RemoteAgent DEBUG   Setting recommended pref extensions.getAddons.cache.enabled to false
1723813046678   RemoteAgent DEBUG   Setting recommended pref extensions.getAddons.discovery.api_url to data:, 
1723813046678   RemoteAgent DEBUG   Setting recommended pref extensions.blocklist.detailsURL to http://%(server)s/extensions-dummy/blocklistDetailsURL
1723813046678   RemoteAgent DEBUG   Setting recommended pref extensions.blocklist.itemURL to http://%(server)s/extensions-dummy/blocklistItemURL
1723813046678   RemoteAgent DEBUG   Setting recommended pref extensions.hotfix.url to http://%(server)s/extensions-dummy/hotfixURL
1723813046678   RemoteAgent DEBUG   Setting recommended pref extensions.systemAddon.update.url to http://%(server)s/dummy-system-addons.xml
1723813046678   RemoteAgent DEBUG   Setting recommended pref extensions.update.background.url to http://%(server)s/extensions-dummy/updateBackgroundURL
1723813046678   RemoteAgent DEBUG   Setting recommended pref extensions.update.url to http://%(server)s/extensions-dummy/updateURL
1723813046678   RemoteAgent DEBUG   Setting recommended pref extensions.getAddons.get.url to http://%(server)s/extensions-dummy/repositoryGetURL
1723813046678   RemoteAgent DEBUG   Setting recommended pref extensions.getAddons.search.browseURL to http://%(server)s/extensions-dummy/repositoryBrowseURL
1723813046678   RemoteAgent DEBUG   Setting recommended pref geo.provider.network.url to 
1723813046678   RemoteAgent DEBUG   Setting recommended pref identity.fxaccounts.auth.uri to https://{server}/dummy/fxa
1723813046678   RemoteAgent DEBUG   Setting recommended pref network.connectivity-service.enabled to false
1723813046678   RemoteAgent DEBUG   Setting recommended pref network.http.phishy-userpass-length to 255
1723813046678   RemoteAgent DEBUG   Setting recommended pref network.http.prompt-temp-redirect to false
1723813046678   RemoteAgent DEBUG   Setting recommended pref privacy.trackingprotection.enabled to false
1723813046678   RemoteAgent DEBUG   Setting recommended pref remote.prefs.recommended.applied to true
1723813046678   RemoteAgent DEBUG   Setting recommended pref security.fileuri.strict_origin_policy to false
1723813046678   RemoteAgent DEBUG   Setting recommended pref security.notification_enable_delay to 0
1723813046678   RemoteAgent DEBUG   Setting recommended pref security.remote_settings.intermediates.enabled to false
1723813046678   RemoteAgent DEBUG   Setting recommended pref signon.autofillForms to false
1723813046678   RemoteAgent DEBUG   Setting recommended pref signon.rememberSignons to false
1723813046678   RemoteAgent DEBUG   Setting recommended pref toolkit.telemetry.server to https://%(server)s/telemetry-dummy/
1723813046678   RemoteAgent DEBUG   Setting recommended pref widget.windows.window_occlusion_tracking.enabled to false
1723813046778   geckodriver::browser    TRACE   Failed to open /var/folders/37/j7lllbzd26x90lc1ddfj4k3h0000gn/T/rust_mozprofileIW2LE9/MarionetteActivePort
1723813046778   geckodriver::marionette TRACE   Retrying in 100ms
1723813046800   Marionette  TRACE   Received observer notification final-ui-startup
1723813046834   Marionette  INFO    Listening on port 64125
1723813046834   Marionette  DEBUG   Marionette is listening
Read port: 64125
1723813046906   Marionette  DEBUG   Accepted connection 0 from 127.0.0.1:64126
1723813046940   geckodriver::marionette DEBUG   Connection to Marionette established on 127.0.0.1:64125.
1723813046946   Marionette  DEBUG   0 -> [0,1,"WebDriver:NewSession",{"acceptInsecureCerts":true,"browserName":"firefox"}]
1723813046947   RemoteAgent WARN    TLS certificate errors will be ignored for this session
1723813046947   Marionette  DEBUG   Waiting for initial application window
UNSUPPORTED (log once): POSSIBLE ISSUE: unit 1 GLD_TEXTURE_INDEX_2D is unloadable and bound to sampler type (Float) - using zero texture because texture unloadable
1723813047487   Marionette  TRACE   Received observer notification browser-idle-startup-tasks-finished
1723813047488   RemoteAgent TRACE   [9] ProgressListener Start: expectNavigation=false resolveWhenStarted=false unloadTimeout=5000 waitForExplicitStart=false
1723813047488   RemoteAgent TRACE   [9] ProgressListener Setting unload timer (5000ms)
1723813047488   RemoteAgent TRACE   [9] Wait for initial navigation: isInitial=false, isLoadingDocument=false
1723813047488   RemoteAgent TRACE   [9] Document already finished loading: about:blank
1723813047488   RemoteAgent TRACE   [9] ProgressListener Stop: has error=false url=about:blank
1723813047492   Marionette  DEBUG   0 <- [1,1,null,{"sessionId":"5c91e616-1c17-4715-b87a-cc17e4c4dbc2","capabilities":{"acceptInsecureCerts":true,"browserName":"firefox","browserVersion":"129.0.1","platformName":"mac","unhandledPromptBehavior":"dismiss and notify","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:129.0) Gecko/20100101 Firefox/129.0","moz:buildID":"20240812083845","moz:headless":false,"moz:platformVersion":"22.3.0","moz:processID":32910,"moz:profile":"/var/folders/37/j7lllbzd26x90lc1ddfj4k3h0000gn/T/rust_mozprofileIW2LE9","moz:shutdownTimeout":60000,"pageLoadStrategy":"normal","timeouts":{"implicit":0,"pageLoad":300000,"script":30000},"setWindowRect":true,"strictFileInteractability":false,"moz:accessibilityChecks":false,"moz:webdriverClick":true,"moz:windowless":false,"proxy":{}}}]
1723813047493   webdriver::server   DEBUG   <- 200 OK {"value":{"sessionId":"5c91e616-1c17-4715-b87a-cc17e4c4dbc2","capabilities":{"acceptInsecureCerts":true,"browserNam ... r":"dismiss and notify","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:129.0) Gecko/20100101 Firefox/129.0"}}}
1723813047501   webdriver::server   DEBUG   -> POST /session/5c91e616-1c17-4715-b87a-cc17e4c4dbc2/url {"url":"https://reporting.bsstag.com/"}
1723813047501   Marionette  DEBUG   0 -> [0,2,"WebDriver:Navigate",{"url":"https://reporting.bsstag.com/"}]
1723813047503   Marionette  TRACE   [9] Received event beforeunload for about:blank
console.warn: "nsPrompter: isThirdPartyURI failed: [Exception... \"Component returned failure code: 0x80070057 (NS_ERROR_ILLEGAL_VALUE) [nsIPrincipal.isThirdPartyURI]\"  nsresult: \"0x80070057 (NS_ERROR_ILLEGAL_VALUE)\"  location: \"JS frame :: resource://gre/modules/Prompter.sys.mjs :: openPrompt :: line 1149\"  data: no]"
1723813049823   RemoteAgent TRACE   Received observer notification common-dialog-loaded
1723813049823   Marionette  TRACE   Canceled page load listener because a promptUserAndPass prompt opened
1723813049824   Marionette  DEBUG   0 <- [1,2,null,{"value":null}]
1723813049826   webdriver::server   DEBUG   <- 200 OK {"value":null}
1723813054938   webdriver::server   DEBUG   -> POST /session/5c91e616-1c17-4715-b87a-cc17e4c4dbc2/execute/sync {"script":"var passedArgs = Array.prototype.slice.call(arg ... le = document.querySelector('body > div > div > a:nth-child(5)');\n  ele?.click();\n}).apply(window, passedArgs);","args":[]}
1723813054938   Marionette  DEBUG   0 -> [0,3,"WebDriver:ExecuteScript",{"args":[],"script":"var passedArgs = Array.prototype.slice.call(arguments,0); return (function () {\n  let ele = document.querySelector('body > div > div > a:nth-child(5)');\n  ele?.click();\n}).apply(window, passedArgs);"}]
1723813054942   RemoteAgent TRACE   Received event DOMModalDialogClosed
1723813054943   Marionette  TRACE   Remoteness change detected. Set new top-level browsing context to 9
1723813054946   Marionette  DEBUG   0 <- [1,3,{"error":"unexpected alert open","message":"Unexpected promptUserAndPass dialog detected. Performed handler \"dismiss\"","stacktrace":"RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8\nWebDriverError@chrome://remote/content/shared/webdriver/Er ... iver/Errors.sys.mjs:800:5\nGeckoDriver.prototype._handleUserPrompts@chrome://remote/content/marionette/driver.sys.mjs:2887:11\n","data":{"text":"This site is asking you to sign in."}},null]
1723813054947   webdriver::server   DEBUG   <- 500 Internal Server Error {"value":{"error":"unexpected alert open","message":"Unexpected promptUserAndPass dialog detecte ... Errors.sys.mjs:800:5\nGeckoDriver.prototype._handleUserPrompts@chrome://remote/content/marionette/driver.sys.mjs:2887:11\n"}}
1723813055954   webdriver::server   DEBUG   -> POST /session/5c91e616-1c17-4715-b87a-cc17e4c4dbc2/execute/sync {"script":"var passedArgs = Array.prototype.slice.call(arg ... le = document.querySelector('body > div > div > a:nth-child(5)');\n  ele?.click();\n}).apply(window, passedArgs);","args":[]}
1723813055955   Marionette  DEBUG   0 -> [0,4,"WebDriver:ExecuteScript",{"args":[],"script":"var passedArgs = Array.prototype.slice.call(arguments,0); return (function () {\n  let ele = document.querySelector('body > div > div > a:nth-child(5)');\n  ele?.click();\n}).apply(window, passedArgs);"}]
1723813055959   RemoteAgent TRACE   WebDriverProcessData actor created for PID 32917
1723813055960   Marionette  TRACE   [9] MarionetteCommands actor created for window id 6442450945
1723813055963   Marionette  DEBUG   0 <- [1,4,null,{"value":null}]
1723813055963   webdriver::server   DEBUG   <- 200 OK {"value":null}
1723813059476   webdriver::server   DEBUG   -> DELETE /session/5c91e616-1c17-4715-b87a-cc17e4c4dbc2 
1723813059477   Marionette  DEBUG   0 -> [0,5,"Marionette:Quit",{"flags":["eForceQuit"]}]
1723813059477   Marionette  INFO    Stopped listening on port 64125
1723813059484   Marionette  TRACE   [9] MarionetteCommands actor destroyed for window id 6442450945
1723813059719   Marionette  TRACE   Received observer notification quit-application
1723813059720   Marionette  TRACE   Received observer notification quit-application
1723813059720   RemoteAgent DEBUG   Resetting recommended pref apz.content_response_timeout
1723813059720   RemoteAgent DEBUG   Resetting recommended pref browser.contentblocking.introCount
1723813059720   RemoteAgent DEBUG   Resetting recommended pref browser.download.panel.shown
1723813059720   RemoteAgent DEBUG   Resetting recommended pref browser.newtabpage.activity-stream.discoverystream.region-weather-config
1723813059720   RemoteAgent DEBUG   Resetting recommended pref browser.newtabpage.activity-stream.newtabWallpapers.enabled
1723813059720   RemoteAgent DEBUG   Resetting recommended pref browser.newtabpage.activity-stream.newtabWallpapers.v2.enabled
1723813059720   RemoteAgent DEBUG   Resetting recommended pref browser.newtabpage.activity-stream.showSponsoredTopSites
1723813059720   RemoteAgent DEBUG   Resetting recommended pref browser.newtabpage.enabled
1723813059721   RemoteAgent DEBUG   Resetting recommended pref browser.pagethumbnails.capturing_disabled
1723813059721   RemoteAgent DEBUG   Resetting recommended pref browser.region.network.url
1723813059721   RemoteAgent DEBUG   Resetting recommended pref browser.safebrowsing.blockedURIs.enabled
1723813059722   RemoteAgent DEBUG   Resetting recommended pref browser.safebrowsing.downloads.enabled
1723813059723   RemoteAgent DEBUG   Resetting recommended pref browser.safebrowsing.malware.enabled
1723813059724   RemoteAgent DEBUG   Resetting recommended pref browser.safebrowsing.phishing.enabled
1723813059725   RemoteAgent DEBUG   Resetting recommended pref browser.search.update
1723813059725   RemoteAgent DEBUG   Resetting recommended pref browser.startup.couldRestoreSession.count
1723813059725   RemoteAgent DEBUG   Resetting recommended pref browser.tabs.remote.unloadDelayMs
1723813059725   RemoteAgent DEBUG   Resetting recommended pref browser.tabs.unloadOnLowMemory
1723813059725   RemoteAgent DEBUG   Resetting recommended pref browser.tabs.warnOnClose
1723813059725   RemoteAgent DEBUG   Resetting recommended pref browser.tabs.warnOnCloseOtherTabs
1723813059725   RemoteAgent DEBUG   Resetting recommended pref browser.tabs.warnOnOpen
1723813059725   RemoteAgent DEBUG   Resetting recommended pref browser.toolbars.bookmarks.visibility
1723813059725   RemoteAgent DEBUG   Resetting recommended pref browser.topsites.contile.enabled
1723813059725   RemoteAgent DEBUG   Resetting recommended pref browser.usedOnWindows10.introURL
1723813059725   RemoteAgent DEBUG   Resetting recommended pref browser.urlbar.merino.endpointURL
1723813059725   RemoteAgent DEBUG   Resetting recommended pref browser.urlbar.suggest.searches
1723813059726   RemoteAgent DEBUG   Resetting recommended pref datareporting.policy.dataSubmissionPolicyAccepted
1723813059726   RemoteAgent DEBUG   Resetting recommended pref dom.disable_open_during_load
1723813059726   RemoteAgent DEBUG   Resetting recommended pref dom.file.createInChild
1723813059726   RemoteAgent DEBUG   Resetting recommended pref dom.input_events.security.minNumTicks
1723813059726   RemoteAgent DEBUG   Resetting recommended pref dom.input_events.security.minTimeElapsedInMS
1723813059726   RemoteAgent DEBUG   Resetting recommended pref dom.max_chrome_script_run_time
1723813059726   RemoteAgent DEBUG   Resetting recommended pref dom.max_script_run_time
1723813059726   RemoteAgent DEBUG   Resetting recommended pref dom.navigation.locationChangeRateLimit.count
1723813059726   RemoteAgent DEBUG   Resetting recommended pref dom.push.connection.enabled
1723813059726   RemoteAgent DEBUG   Resetting recommended pref dom.screenorientation.allow-lock
1723813059726   RemoteAgent DEBUG   Resetting recommended pref dom.successive_dialog_time_limit
1723813059726   RemoteAgent DEBUG   Resetting recommended pref extensions.getAddons.cache.enabled
1723813059726   RemoteAgent DEBUG   Resetting recommended pref extensions.getAddons.discovery.api_url
1723813059726   RemoteAgent DEBUG   Resetting recommended pref extensions.blocklist.detailsURL
1723813059726   RemoteAgent DEBUG   Resetting recommended pref extensions.blocklist.itemURL
1723813059726   RemoteAgent DEBUG   Resetting recommended pref extensions.hotfix.url
1723813059726   RemoteAgent DEBUG   Resetting recommended pref extensions.systemAddon.update.url
1723813059726   RemoteAgent DEBUG   Resetting recommended pref extensions.update.background.url
1723813059726   RemoteAgent DEBUG   Resetting recommended pref extensions.update.url
1723813059726   RemoteAgent DEBUG   Resetting recommended pref extensions.getAddons.get.url
1723813059727   RemoteAgent DEBUG   Resetting recommended pref extensions.getAddons.search.browseURL
1723813059727   RemoteAgent DEBUG   Resetting recommended pref geo.provider.network.url
1723813059727   RemoteAgent DEBUG   Resetting recommended pref identity.fxaccounts.auth.uri
1723813059727   RemoteAgent DEBUG   Resetting recommended pref network.connectivity-service.enabled
1723813059727   RemoteAgent DEBUG   Resetting recommended pref network.http.phishy-userpass-length
1723813059727   RemoteAgent DEBUG   Resetting recommended pref network.http.prompt-temp-redirect
1723813059727   RemoteAgent DEBUG   Resetting recommended pref privacy.trackingprotection.enabled
1723813059727   RemoteAgent DEBUG   Resetting recommended pref remote.prefs.recommended.applied
1723813059727   RemoteAgent DEBUG   Resetting recommended pref security.fileuri.strict_origin_policy
1723813059727   RemoteAgent DEBUG   Resetting recommended pref security.notification_enable_delay
1723813059727   RemoteAgent DEBUG   Resetting recommended pref security.remote_settings.intermediates.enabled
1723813059727   RemoteAgent DEBUG   Resetting recommended pref signon.autofillForms
1723813059727   RemoteAgent DEBUG   Resetting recommended pref signon.rememberSignons
1723813059727   RemoteAgent DEBUG   Resetting recommended pref toolkit.telemetry.server
1723813059727   RemoteAgent DEBUG   Resetting recommended pref widget.windows.window_occlusion_tracking.enabled
1723813059727   Marionette  DEBUG   Marionette stopped listening
1723813059728   Marionette  DEBUG   0 <- [1,5,null,{"cause":"shutdown","forced":false,"in_app":true}]
1723813059737   webdriver::server   DEBUG   Teardown session
1723813059742   Marionette  DEBUG   Closed connection 0
1723813059842   geckodriver::browser    DEBUG   Browser process stopped: exit status: 0
1723813059849   webdriver::server   DEBUG   <- 200 OK {"value":null}

Trace-level log

whimboo commented 3 weeks ago

Thanks for the report. After taking a look I don't see any related code that uses readyState to check the loading state of the document. Can you please clarify where it should exactly be used? Maybe you missed something. We have tests running in CI that exactly check for the correct state. So we would need a trace log that actually shows the issue.

Or what does loading state mean? Note that additional content can be loaded by the page via fetch etc. after it reached the complete state. So maybe that's what you experiencing here?

BhavikaTibrewal commented 2 weeks ago

Here loading state is the resolving state of the browser which is the reverse loading state of the web page in which it fetched the document of the page ( will update with more details related to this)

BhavikaTibrewal commented 2 weeks ago

Code that check for document.readystate page.execute has this code behind it

  async waitForDocumetReadyState(timelimit) {
    const timeoutPromise = new Promise((resolve) => {
      setTimeout(() => {
         resolve({ status: 0, message: 'timedout' });
      }, timelimit);
    });

    let result = await Promise.race([
      this.page.execute(async function () {
        async function checkDocumentReadyState() {
          return new Promise(resolve => {
            function check() {
              if (document.readyState === 'complete') {
                console.log('Document is ready!');
                resolve();
              } else {
                console.log('Document is still loading...');
                setTimeout(check, 100);
              }
            }
            check();
          });
        };

        try {
          await checkDocumentReadyState();
          return true;
        } catch (error) {
          return false;
        };
      }),

      timeoutPromise
    ]);

    return result;
  }
whimboo commented 2 weeks ago

So if the readyState is not complete at the time when the script gets executed it could happen that due to a process change the command returns. This is expected but not yet exactly clarified in the WebDriver classic specification. There is a change in Firefox Nightly that landed last night, which under such a situation also returns a failure, so that client code can try to re-run the script. But nevertheless why aren't you using the pageLoadStrategy set to complete which will trigger the browser to wait on its own?

But regarding the above problem the provided trace log doesn't show any instance of a document.readyState usage, and as such I cannot blindly say what's wrong. So please try again and provide a log where this line is in the log.

whimboo commented 1 week ago

Due to the lack of response I'm going ahead and close the issue, but I'm happy to reopen if the requested information is given and indicates that this is a bug.