Closed Bug 1650872 Opened 4 years ago Closed 4 years ago

Error calling `setWindowRect` in Fenix production builds: "ERROR: InvalidArgumentError: setWindowRect is only supported in Firefox desktop"

Categories

(Remote Protocol :: Marionette, defect, P1)

ARM
Android
defect

Tracking

(firefox80 fixed, firefox81 fixed)

RESOLVED FIXED
81 Branch
Tracking Status
firefox80 --- fixed
firefox81 --- fixed

People

(Reporter: acreskey, Assigned: whimboo)

Details

Attachments

(1 file, 1 obsolete file)

When running Browsertime against recent Fenix production builds, the following error is seen:

"ERROR: InvalidArgumentError: setWindowRect is only supported in Firefox desktop"

I believe that the following Marionette capabilities test is failing:
https://searchfox.org/mozilla-central/rev/91d82d7cbf05a71954dfa49d0e43824c7c973e62/testing/marionette/capabilities.js#548

Perhaps the name of Fenix has changed and so appinfo.name != "firefox" ?

This is an example Fenix binary where I'm seeing this issue:
https://firefox-ci-tc.services.mozilla.com/api/index/v1/task/project.mobile.fenix.v2.fennec-production.2020.07.03.latest/artifacts/public/build/arm64-v8a/geckoBeta/target.apk

More logs: https://paste.rs/GlK

Depending on the root issue, this bug may be in the wrong component.

By the WebDriver spec:

Boolean indicating whether the remote end supports all of the resizing and positioning commands.

Is Fenix really able to resize and position the window? I doubt that any Android based package can do that.

Flags: needinfo?(acreskey)

(In reply to Henrik Skupin (:whimboo) [⌚️UTC+2] from comment #1)

By the WebDriver spec:

Boolean indicating whether the remote end supports all of the resizing and positioning commands.

Is Fenix really able to resize and position the window? I doubt that any Android based package can do that.

Hmm.. I believe geckoview can, but I agree that it seems unlikely Fenix would support that.

What's strange about this error is that we test other variations of Fenix (some in CI) with the same version browsertime.
And they make the same setWindowRect() calls.

Let me find out why browsertime is making this call.

Flags: needinfo?(acreskey)

I might not be able to fix this on the browsertime end.

From my callstack and from debugging, the setWindowRect() call is called indirectly when we attempt to browser.getDriver().get(startURL);
https://github.com/sitespeedio/browsertime/blob/0bfa3049293139e695d02a2ca0de594f3456d64c/lib/core/engine/iteration.js#L167

If I trace this further into the selenium-webdriver layer, I'm also seeing a get() call:
https://github.com/SeleniumHQ/selenium/blob/941dc9c6b2e2aa4f701c1b72be8de03d4b7e996a/javascript/node/selenium-webdriver/lib/webdriver.js#L1058

So is it possible that a setWindowRect() is being inserted as part of preamble for get() at a lower level?

The problem with setWindowRect here is with the new session creation. That's the only place where this capability is checked, and an error returned if the device/platform doesn't support resizing/positioning the browser window.

https://w3c.github.io/webdriver/#dfn-window-dimensioning-positioning

:whimboo, can you point me to the code where setWindowRect is called in the new session creation? (This is in geckodriver, right?)

I'm still unclear as to why most of our android-based gecko builds (including Fenix nightly) will report the setWindowRect capability, but not the recent production builds.
Is there some way I can see the appinfo.name that marionette sees?
https://searchfox.org/mozilla-central/rev/91d82d7cbf05a71954dfa49d0e43824c7c973e62/testing/marionette/capabilities.js#546-548

Flags: needinfo?(hskupin)

There might be two underlying issues:

  1. The tool requesting the new session sends the setWindowRect capability set to true while it shouldn't. On Android an application cannot resize or move its window. So AFAIK it shouldn't be set to true at all.

  2. The application name is wrongly reported or cannot be retrieved.

(In reply to Andrew Creskey [:acreskey] [he/him] from comment #5)

Is there some way I can see the appinfo.name that marionette sees?

See https://searchfox.org/mozilla-central/rev/91d82d7cbf05a71954dfa49d0e43824c7c973e62/testing/marionette/capabilities.js#35. That's how we retrieve the application name. You can a dump() statement to log the output to stdout (adb logcat). Or use your debugger and check for Services.appinfo.name.

Flags: needinfo?(hskupin)
Severity: -- → S3
Priority: -- → P3
Flags: needinfo?(acreskey)

I've had to put this on hold as we're seeing all recent Fenix and geckview_example apps crash on launch through Browsertime.
(Appears to be Android 10 and access to /mnt/sdcard/org.mozilla.fennec_aurora-geckodriver-profile)

Ok, so it most likely depends on a fix for bug 1650891. Marking it as dependency so that we get notified here once it has been fixed.

Depends on: 1650891

(In reply to Henrik Skupin (:whimboo) [⌚️UTC+2] from comment #6)

There might be two underlying issues:

  1. The tool requesting the new session sends the setWindowRect capability set to true while it shouldn't. On Android an application cannot resize or move its window. So AFAIK it shouldn't be set to true at all.

  2. The application name is wrongly reported or cannot be retrieved.

(In reply to Andrew Creskey [:acreskey] [he/him] from comment #5)

Is there some way I can see the appinfo.name that marionette sees?

See https://searchfox.org/mozilla-central/rev/91d82d7cbf05a71954dfa49d0e43824c7c973e62/testing/marionette/capabilities.js#35. That's how we retrieve the application name. You can a dump() statement to log the output to stdout (adb logcat). Or use your debugger and check for Services.appinfo.name.

:whimboo, the fenix production is now being released and we can't test it in browsertime because of this issue. I tried to disable the setWindowRect capability but I get this error - would you know of any other way we can get around this issue?

13:57:22     INFO -  raptor-browsertime Info: Browser failed to start, trying 2 more time(s): InvalidArgumentError: setWindowRect cannot be disabled

That's interesting. It means that Fenix actually identifies as Firefox and we are hitting this line:
https://searchfox.org/mozilla-central/rev/ab81b8552f4aa9696a2524f97fdfeb59d4dc31c1/testing/marionette/capabilities.js#545

Reason is that we force all GeckoView apps to actually report Firefox as it's name here:
https://searchfox.org/mozilla-central/rev/ab81b8552f4aa9696a2524f97fdfeb59d4dc31c1/testing/marionette/capabilities.js#599-601

So could you please check by updating the code for setWindowRect in line 544 and checking that it is not android by using getWebDriverPlatformName()? I think that should make it.

Flags: needinfo?(acreskey) → needinfo?(gmierz2)
No longer depends on: 1650891

What I don't understand is how other configurations of Fenix were able to get past this check, if all GeckoView apps report Firefox as their name.

Oh, I think there is another problem here:

https://searchfox.org/mozilla-central/rev/ab81b8552f4aa9696a2524f97fdfeb59d4dc31c1/testing/marionette/capabilities.js#443

Andrew, which steps do I have to run to test changes with browsertime? Maybe I can just make those.

(In reply to Henrik Skupin (:whimboo) [⌚️UTC+2] from comment #12)

Oh, I think there is another problem here:

https://searchfox.org/mozilla-central/rev/ab81b8552f4aa9696a2524f97fdfeb59d4dc31c1/testing/marionette/capabilities.js#443

Andrew, which steps do I have to run to test changes with browsertime? Maybe I can just make those.

Henrik, the performance developers generally run Fenix through browsertime using variations on the scripts in this repo:
https://github.com/acreskeyMoz/browsertime_on_android_scripts

A minimal version of what's being run is:
/{path_to_mc}/mozilla-central/tools/browsertime/node_modules/browsertime/bin/browsertime.js --firefox.geckodriverPath="{GECKODRIVER_PATH}" --firefox.android.package org.mozilla.fennec_aurora --firefox.android.activity "org.mozilla.fenix.IntentReceiverActivity" --firefox.android.intentArgument=-a --firefox.android.intentArgument=android.intent.action.VIEW --firefox.android.intentArgument=-d --firefox.android.intentArgument="data:," "https://www.mozilla.org"
(Some substitutions needed, including possibly the package name org.mozilla.fennec_aurora)
Ping me if this isn't working.

Peter and I were debugging this here before: https://github.com/sitespeedio/browsertime/issues/1331#issuecomment-671949024

You can reproduce it with a release version of Fenix, and through raptor with the command: ./mach raptor -t amazon --app fenix --binary org.mozilla.firefox --post-startup-delay 1 --disable-perf-tuning --browsertime --no-conditioned-profile --browsertime-geckodriver /home/sparky/geckodriver

You can get a release version of Fenix from here: https://firefox-ci-tc.services.mozilla.com/tasks/index/mobile.v2.fenix.fennec-production.latest/armeabi-v7a

Oh, so that's only for release versions? What would explain why we don't see it for geckoview_example and other test apps.

I will see what I can do over the next days. Is there a way for me to get a release build of fenix built via try?

(In reply to Henrik Skupin (:whimboo) [⌚️UTC+2] from comment #15)

Oh, so that's only for release versions? What would explain why we don't see it for geckoview_example and other test apps.

I will see what I can do over the next days. Is there a way for me to get a release build of fenix built via try?

Henrik, I use this formula to insert Geckoview's built on try into locally-built Fenix builds:
How to substitute a custom GeckoView automation (try) build into a Fenix build
https://docs.google.com/document/d/1Ud5n8a4YUhNtgDQ7_d2kDGDDaqBX65MLf5jci4SDotA/edit#heading=h.7d3r0l4wehh

I haven't confirmed that we'll see the problem in this setup though.

Assignee: nobody → hskupin
Status: NEW → ASSIGNED

I actually don't have the time to verify the changes, but I uploaded a patch, which should fix the problem you are seeing. Can you please build Fenix yourself and test it? Thanks.

Assignee: hskupin → nobody
Status: ASSIGNED → NEW
Flags: needinfo?(acreskey)
Attachment #9169829 - Attachment is obsolete: true

Good stuff Henrik, I'm on it.

Hmm.. it doesn't look like dependency substitution works for release builds. Let me ask around.

Henrik, I was able to substitute in your change into a release build of fenix.

I can confirm that this patch allows release Fenix to launch through Browsertime.
(And that without your patch, we see the same setWindowRect error.)

Ship it, please :)

Flags: needinfo?(acreskey) → needinfo?(hskupin)
Assignee: nobody → hskupin
Status: NEW → ASSIGNED
Flags: needinfo?(hskupin)
Priority: P3 → P1
Attachment #9169830 - Attachment description: Bug 1650872 - [marionette] Fix handling of setWindowRect capability for GeckoView. → Bug 1650872 - [marionette] Allow setWindowRect capability for all desktop but not Android.
Pushed by mjzffr@gmail.com:
https://hg.mozilla.org/integration/autoland/rev/d445a6575005
[marionette] Allow setWindowRect capability for all desktop but not Android. r=marionette-reviewers,maja_zf

Backed out changeset d445a6575005 (bug 1650872) for test_capabilities.js failures.

Push with failures: https://treeherder.mozilla.org/#/jobs?repo=autoland&group_state=expanded&selectedTaskRun=I7xKbc1zSxStb8liONobcA.0&searchStr=xpcshell&fromchange=e04237d752ed2496b65a14d42dd2642310db377f&tochange=5b006156349e160b0c31386df43c73665a7a5af5

Backout link: https://hg.mozilla.org/integration/autoland/rev/5b006156349e160b0c31386df43c73665a7a5af5

Failure log: https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=313066043&repo=autoland&lineNumber=6148

[task 2020-08-14T22:09:41.703Z] 22:09:41     INFO -  TEST-START | testing/marionette/test/unit/test_capabilities.js
[task 2020-08-14T22:09:41.904Z] 22:09:41  WARNING -  TEST-UNEXPECTED-FAIL | testing/marionette/test/unit/test_capabilities.js | xpcshell return code: 0
[task 2020-08-14T22:09:41.905Z] 22:09:41     INFO -  TEST-INFO took 201ms
[task 2020-08-14T22:09:41.905Z] 22:09:41     INFO -  >>>>>>>
[task 2020-08-14T22:09:41.905Z] 22:09:41     INFO -  (xpcshell/head.js) | test MAIN run_test pending (1)
[task 2020-08-14T22:09:41.906Z] 22:09:41     INFO -  (xpcshell/head.js) | test run_next_test 0 pending (2)
[task 2020-08-14T22:09:41.906Z] 22:09:41     INFO -  (xpcshell/head.js) | test MAIN run_test finished (2)
[task 2020-08-14T22:09:41.906Z] 22:09:41     INFO -  running event loop
[task 2020-08-14T22:09:41.907Z] 22:09:41     INFO -  testing/marionette/test/unit/test_capabilities.js | Starting test_Timeouts_ctor
[task 2020-08-14T22:09:41.907Z] 22:09:41     INFO -  (xpcshell/head.js) | test test_Timeouts_ctor pending (2)
[task 2020-08-14T22:09:41.908Z] 22:09:41     INFO -  TEST-PASS | testing/marionette/test/unit/test_capabilities.js | test_Timeouts_ctor - [test_Timeouts_ctor : 30] 0 == 0
[task 2020-08-14T22:09:41.908Z] 22:09:41     INFO -  TEST-PASS | testing/marionette/test/unit/test_capabilities.js | test_Timeouts_ctor - [test_Timeouts_ctor : 31] 300000 == 300000
[task 2020-08-14T22:09:41.909Z] 22:09:41     INFO -  TEST-PASS | testing/marionette/test/unit/test_capabilities.js | test_Timeouts_ctor - [test_Timeouts_ctor : 32] 30000 == 30000
[task 2020-08-14T22:09:41.909Z] 22:09:41     INFO -  (xpcshell/head.js) | test run_next_test 1 pending (3)
[task 2020-08-14T22:09:41.910Z] 22:09:41     INFO -  (xpcshell/head.js) | test test_Timeouts_ctor finished (3)
[task 2020-08-14T22:09:41.910Z] 22:09:41     INFO -  (xpcshell/head.js) | test run_next_test 0 finished (2)
[task 2020-08-14T22:09:41.911Z] 22:09:41     INFO -  testing/marionette/test/unit/test_capabilities.js | Starting test_Timeouts_toString
[task 2020-08-14T22:09:41.911Z] 22:09:41     INFO -  (xpcshell/head.js) | test test_Timeouts_toString pending (2)
[task 2020-08-14T22:09:41.911Z] 22:09:41     INFO -  TEST-PASS | testing/marionette/test/unit/test_capabilities.js | test_Timeouts_toString - [test_Timeouts_toString : 38] "[object Timeouts]" == "[object Timeouts]"
[task 2020-08-14T22:09:41.912Z] 22:09:41     INFO -  (xpcshell/head.js) | test run_next_test 2 pending (3)
[task 2020-08-14T22:09:41.912Z] 22:09:41     INFO -  (xpcshell/head.js) | test test_Timeouts_toString finished (3)
[task 2020-08-14T22:09:41.913Z] 22:09:41     INFO -  (xpcshell/head.js) | test run_next_test 1 finished (2)
[task 2020-08-14T22:09:41.913Z] 22:09:41     INFO -  testing/marionette/test/unit/test_capabilities.js | Starting test_Timeouts_toJSON
[task 2020-08-14T22:09:41.914Z] 22:09:41     INFO -  (xpcshell/head.js) | test test_Timeouts_toJSON pending (2)
[task 2020-08-14T22:09:41.914Z] 22:09:41     INFO -  TEST-PASS | testing/marionette/test/unit/test_capabilities.js | test_Timeouts_toJSON - [test_Timeouts_toJSON : 45] {"implicit":0,"pageLoad":300000,"script":30000} deepEqual {"implicit":0,"pageLoad":300000,"script":30000}
[task 2020-08-14T22:09:41.915Z] 22:09:41     INFO -  (xpcshell/head.js) | test run_next_test 3 pending (3)
[task 2020-08-14T22:09:41.915Z] 22:09:41     INFO -  (xpcshell/head.js) | test test_Timeouts_toJSON finished (3)
[task 2020-08-14T22:09:41.915Z] 22:09:41     INFO -  (xpcshell/head.js) | test run_next_test 2 finished (2)
[task 2020-08-14T22:09:41.916Z] 22:09:41     INFO -  testing/marionette/test/unit/test_capabilities.js | Starting test_Timeouts_fromJSON
[task 2020-08-14T22:09:41.916Z] 22:09:41     INFO -  (xpcshell/head.js) | test test_Timeouts_fromJSON pending (2)
[task 2020-08-14T22:09:41.916Z] 22:09:41     INFO -  TEST-PASS | testing/marionette/test/unit/test_capabilities.js | test_Timeouts_fromJSON - [test_Timeouts_fromJSON : 57] 0 == 0
[task 2020-08-14T22:09:41.917Z] 22:09:41     INFO -  TEST-PASS | testing/marionette/test/unit/test_capabilities.js | test_Timeouts_fromJSON - [test_Timeouts_fromJSON : 58] 2 == 2
[task 2020-08-14T22:09:41.917Z] 22:09:41     INFO -  TEST-PASS | testing/marionette/test/unit/test_capabilities.js | test_Timeouts_fromJSON - [test_Timeouts_fromJSON : 59] 9007199254740991 == 9007199254740991
[task 2020-08-14T22:09:41.918Z] 22:09:41     INFO -  (xpcshell/head.js) | test run_next_test 4 pending (3)
[task 2020-08-14T22:09:41.918Z] 22:09:41     INFO -  (xpcshell/head.js) | test test_Timeouts_fromJSON finished (3)
[task 2020-08-14T22:09:41.918Z] 22:09:41     INFO -  (xpcshell/head.js) | test run_next_test 3 finished (2)
[task 2020-08-14T22:09:41.919Z] 22:09:41     INFO -  testing/marionette/test/unit/test_capabilities.js | Starting test_Timeouts_fromJSON_unrecognised_field
[task 2020-08-14T22:09:41.919Z] 22:09:41     INFO -  (xpcshell/head.js) | test test_Timeouts_fromJSON_unrecognised_field pending (2)
[task 2020-08-14T22:09:41.919Z] 22:09:41     INFO -  TEST-PASS | testing/marionette/test/unit/test_capabilities.js | test_Timeouts_fromJSON_unrecognised_field - [test_Timeouts_fromJSON_unrecognised_field : 71] "InvalidArgumentError" == "InvalidArgumentError"
[task 2020-08-14T22:09:41.920Z] 22:09:41     INFO -  TEST-PASS | testing/marionette/test/unit/test_capabilities.js | test_Timeouts_fromJSON_unrecognised_field - [test_Timeouts_fromJSON_unrecognised_field : 72] "Unrecognised timeout: sessionId" == "Unrecognised timeout: sessionId"
[task 2020-08-14T22:09:41.920Z] 22:09:41     INFO -  (xpcshell/head.js) | test run_next_test 5 pending (3)
[task 2020-08-14T22:09:41.921Z] 22:09:41     INFO -  (xpcshell/head.js) | test test_Timeouts_fromJSON_unrecognised_field finished (3)
[task 2020-08-14T22:09:41.921Z] 22:09:41     INFO -  (xpcshell/head.js) | test run_next_test 4 finished (2)
[task 2020-08-14T22:09:41.922Z] 22:09:41     INFO -  testing/marionette/test/unit/test_capabilities.js | Starting test_Timeouts_from
[task 2020-08-14T22:09:41.922Z] 22:09:41     INFO -  (xpcshell/head.js) | test test_Timeouts_fromJSON_invalid_types pending (2)
[task 2020-08-14T22:09:41.923Z] 22:09:41     INFO -  TEST-PASS | testing/marionette/test/unit/test_capabilities.js | test_Timeouts_fromJSON_invalid_types - [test_Timeouts_fromJSON_invalid_types : 80] ..
[task 2020-08-14T22:09:41.923Z] 22:09:41     INFO -  TEST-PASS | testing/marionette/test/unit/test_capabilities.js | test_Timeouts_fromJSON_invalid_types - [test_Timeouts_fromJSON_invalid_types : 80] ..
[task 2020-08-14T22:09:41.923Z] 22:09:41     INFO -  TEST-PASS | testing/marionette/test/unit/test_capabilities.js | test_Timeouts_fromJSON_invalid_types - [test_Timeouts_fromJSON_invalid_types : 80] ..
[task 2020-08-14T22:09:41.924Z] 22:09:41     INFO -  TEST-PASS | testing/marionette/test/unit/test_capabilities.js | test_Timeouts_fromJSON_invalid_types - [test_Timeouts_fromJSON_invalid_types : 80] ..
[task 2020-08-14T22:09:41.924Z] 22:09:41     INFO -  TEST-PASS | testing/marionette/test/unit/test_capabilities.js | test_Timeouts_fromJSON_invalid_types - [test_Timeouts_fromJSON_invalid_types : 80] ..
[task 2020-08-14T22:09:41.924Z] 22:09:41     INFO -  TEST-PASS | testing/marionette/test/unit/test_capabilities.js | test_Timeouts_fromJSON_invalid_types - [test_Timeouts_fromJSON_invalid_types : 80] ..
[task 2020-08-14T22:09:41.925Z] 22:09:41     INFO -  (xpcshell/head.js) | test run_next_test 6 pending (3)
[task 2020-08-14T22:09:41.925Z] 22:09:41     INFO -  (xpcshell/head.js) | test test_Timeouts_fromJSON_invalid_types finished (3)
[task 2020-08-14T22:09:41.926Z] 22:09:41     INFO -  (xpcshell/head.js) | test run_next_test 5 finished (2)
[task 2020-08-14T22:09:41.926Z] 22:09:41     INFO -  testing/marionette/test/unit/test_capabilities.js | Starting test_Timeouts_fromJSON_bounds
[task 2020-08-14T22:09:41.927Z] 22:09:41     INFO -  (xpcshell/head.js) | test test_Timeouts_fromJSON_bounds pending (2)
[task 2020-08-14T22:09:41.927Z] 22:09:41     INFO -  TEST-PASS | testing/marionette/test/unit/test_capabilities.js | test_Timeouts_fromJSON_bounds - [test_Timeouts_fromJSON_bounds : 91] ..
[task 2020-08-14T22:09:41.928Z] 22:09:41     INFO -  TEST-PASS | testing/marionette/test/unit/test_capabilities.js | test_Timeouts_fromJSON_bounds - [test_Timeouts_fromJSON_bounds : 91] ..
[task 2020-08-14T22:09:41.928Z] 22:09:41     INFO -  (xpcshell/head.js) | test run_next_test 7 pending (3)
[task 2020-08-14T22:09:41.929Z] 22:09:41     INFO -  (xpcshell/head.js) | test test_Timeouts_fromJSON_bounds finished (3)
[task 2020-08-14T22:09:41.929Z] 22:09:41     INFO -  (xpcshell/head.js) | test run_next_test 6 finished (2)
[task 2020-08-14T22:09:41.929Z] 22:09:41     INFO -  testing/marionette/test/unit/test_capabilities.js | Starting test_PageLoadStrategy
[task 2020-08-14T22:09:41.930Z] 22:09:41     INFO -  (xpcshell/head.js) | test test_PageLoadStrategy pending (2)
[task 2020-08-14T22:09:41.930Z] 22:09:41     INFO -  TEST-PASS | testing/marionette/test/unit/test_capabilities.js | test_PageLoadStrategy - [test_PageLoadStrategy : 101] "none" == "none"
[task 2020-08-14T22:09:41.931Z] 22:09:41     INFO -  TEST-PASS | testing/marionette/test/unit/test_capabilities.js | test_PageLoadStrategy - [test_PageLoadStrategy : 102] "eager" == "eager"
[task 2020-08-14T22:09:41.931Z] 22:09:41     INFO -  TEST-PASS | testing/marionette/test/unit/test_capabilities.js | test_PageLoadStrategy - [test_PageLoadStrategy : 103] "normal" == "normal"
[task 2020-08-14T22:09:41.932Z] 22:09:41     INFO -  (xpcshell/head.js) | test run_next_test 8 pending (3)
[task 2020-08-14T22:09:41.932Z] 22:09:41     INFO -  (xpcshell/head.js) | test test_PageLoadStrategy finished (3)
[task 2020-08-14T22:09:41.933Z] 22:09:41     INFO -  (xpcshell/head.js) | test run_next_test 7 finished (2)
[task 2020-08-14T22:09:41.933Z] 22:09:41     INFO -  testing/marionette/test/unit/test_capabilities.js | Starting test_Proxy_ctor
[task 2020-08-14T22:09:41.934Z] 22:09:41     INFO -  (xpcshell/head.js) | test test_Proxy_ctor pending (2)
[task 2020-08-14T22:09:41.934Z] 22:09:41     INFO -  TEST-PASS | testing/marionette/test/unit/test_capabilities.js | test_Proxy_ctor - [test_Proxy_ctor : 120] proxyType in ["proxyType","httpProxy","sslProxy","ftpProxy","socksProxy","socksVersion","proxyAutoconfigUrl"] - true == true
[task 2020-08-14T22:09:41.935Z] 22:09:41     INFO -  TEST-PASS | testing/marionette/test/unit/test_capabilities.js | test_Proxy_ctor - [test_Proxy_ctor : 121] null == null
[task 2020-08-14T22:09:41.935Z] 22:09:41     INFO -  TEST-PASS | testing/marionette/test/unit/test_capabilities.js | test_Proxy_ctor - [test_Proxy_ctor : 120] httpProxy in ["proxyType","httpProxy","sslProxy","ftpProxy","socksProxy","socksVersion","proxyAutoconfigUrl"] - true == true
[task 2020-08-14T22:09:41.935Z] 22:09:41     INFO -  TEST-PASS | testing/marionette/test/unit/test_capabilities.js | test_Proxy_ctor - [test_Proxy_ctor : 121] null == null
[task 2020-08-14T22:09:41.936Z] 22:09:41     INFO -  TEST-PASS | testing/marionette/test/unit/test_capabilities.js | test_Proxy_ctor - [test_Proxy_ctor : 120] sslProxy in ["proxyType","httpProxy","sslProxy","ftpProxy","socksProxy","socksVersion","proxyAutoconfigUrl"] - true == true
[task 2020-08-14T22:09:41.936Z] 22:09:41     INFO -  TEST-PASS | testing/marionette/test/unit/test_capabilities.js | test_Proxy_ctor - [test_Proxy_ctor : 121] null == null
[task 2020-08-14T22:09:41.936Z] 22:09:41     INFO -  TEST-PASS | testing/marionette/test/unit/test_capabilities.js | test_Proxy_ctor - [test_Proxy_ctor : 120] ftpProxy in ["proxyType","httpProxy","sslProxy","ftpProxy","socksProxy","socksVersion","proxyAutoconfigUrl"] - true == true
[task 2020-08-14T22:09:41.937Z] 22:09:41     INFO -  TEST-PASS | testing/marionette/test/unit/test_capabilities.js | test_Proxy_ctor - [test_Proxy_ctor : 121] null == null
[task 2020-08-14T22:09:41.937Z] 22:09:41     INFO -  TEST-PASS | testing/marionette/test/unit/test_capabilities.js | test_Proxy_ctor - [test_Proxy_ctor : 120] socksProxy in ["proxyType","httpProxy","sslProxy","ftpProxy","socksProxy","socksVersion","proxyAutoconfigUrl"] - true == true
[task 2020-08-14T22:09:41.937Z] 22:09:41     INFO -  TEST-PASS | testing/marionette/test/unit/test_capabilities.js | test_Proxy_ctor - [test_Proxy_ctor : 121] null == null
[task 2020-08-14T22:09:41.938Z] 22:09:41     INFO -  TEST-PASS | testing/marionette/test/unit/test_capabilities.js | test_Proxy_ctor - [test_Proxy_ctor : 120] socksVersion in ["proxyType","httpProxy","sslProxy","ftpProxy","socksProxy","socksVersion","proxyAutoconfigUrl"] - true == true
[task 2020-08-14T22:09:41.938Z] 22:09:41     INFO -  TEST-PASS | testing/marionette/test/unit/test_capabilities.js | test_Proxy_ctor - [test_Proxy_ctor : 121] null == null
[task 2020-08-14T22:09:41.939Z] 22:09:41     INFO -  TEST-PASS | testing/marionette/test/unit/test_capabilities.js | test_Proxy_ctor - [test_Proxy_ctor : 120] proxyAutoconfigUrl in ["proxyType","httpProxy","sslProxy","ftpProxy","socksProxy","socksVersion","proxyAutoconfigUrl"] - true == true
[task 2020-08-14T22:09:41.939Z] 22:09:41     INFO -  TEST-PASS | testing/marionette/test/unit/test_capabilities.js | test_Proxy_ctor - [test_Proxy_ctor : 121] null == null
[task 2020-08-14T22:09:41.940Z] 22:09:41     INFO -  (xpcshell/head.js) | test run_next_test 9 pending (3)
[task 2020-08-14T22:09:41.940Z] 22:09:41     INFO -  (xpcshell/head.js) | test test_Proxy_ctor finished (3)
[task 2020-08-14T22:09:41.940Z] 22:09:41     INFO -  (xpcshell/head.js) | test run_next_test 8 finished (2)
[task 2020-08-14T22:09:41.941Z] 22:09:41     INFO -  testing/marionette/test/unit/test_capabilities.js | Starting test_Proxy_init
...
...
...
[task 2020-08-14T22:09:41.974Z] 22:09:41     INFO -  testing/marionette/test/unit/test_capabilities.js | Starting test_Capabilities_ctor
[task 2020-08-14T22:09:41.975Z] 22:09:41     INFO -  (xpcshell/head.js) | test test_Capabilities_ctor pending (2)
[task 2020-08-14T22:09:41.975Z] 22:09:41     INFO -  TEST-PASS | testing/marionette/test/unit/test_capabilities.js | test_Capabilities_ctor - [test_Capabilities_ctor : 405] true == true
[task 2020-08-14T22:09:41.975Z] 22:09:41     INFO -  TEST-PASS | testing/marionette/test/unit/test_capabilities.js | test_Capabilities_ctor - [test_Capabilities_ctor : 406] true == true
[task 2020-08-14T22:09:41.975Z] 22:09:41     INFO -  TEST-PASS | testing/marionette/test/unit/test_capabilities.js | test_Capabilities_ctor - [test_Capabilities_ctor : 407] true == true
[task 2020-08-14T22:09:41.975Z] 22:09:41     INFO -  TEST-PASS | testing/marionette/test/unit/test_capabilities.js | test_Capabilities_ctor - [test_Capabilities_ctor : 408] true == true
[task 2020-08-14T22:09:41.975Z] 22:09:41     INFO -  TEST-PASS | testing/marionette/test/unit/test_capabilities.js | test_Capabilities_ctor - [test_Capabilities_ctor : 409] true == true
[task 2020-08-14T22:09:41.975Z] 22:09:41     INFO -  TEST-PASS | testing/marionette/test/unit/test_capabilities.js | test_Capabilities_ctor - [test_Capabilities_ctor : 410] "normal" == "normal"
[task 2020-08-14T22:09:41.975Z] 22:09:41     INFO -  TEST-PASS | testing/marionette/test/unit/test_capabilities.js | test_Capabilities_ctor - [test_Capabilities_ctor : 411] false == false
[task 2020-08-14T22:09:41.975Z] 22:09:41     INFO -  TEST-PASS | testing/marionette/test/unit/test_capabilities.js | test_Capabilities_ctor - [test_Capabilities_ctor : 412] true == true
[task 2020-08-14T22:09:41.975Z] 22:09:41     INFO -  TEST-PASS | testing/marionette/test/unit/test_capabilities.js | test_Capabilities_ctor - [test_Capabilities_ctor : 413] true == true
[task 2020-08-14T22:09:41.975Z] 22:09:41  WARNING -  TEST-UNEXPECTED-FAIL | testing/marionette/test/unit/test_capabilities.js | test_Capabilities_ctor - [test_Capabilities_ctor : 414] true == false
[task 2020-08-14T22:09:41.976Z] 22:09:41     INFO -  Z:/task_1597439414/build/tests/xpcshell/tests/testing/marionette/test/unit/test_capabilities.js:test_Capabilities_ctor:414
[task 2020-08-14T22:09:41.976Z] 22:09:41     INFO -  Z:\task_1597439414\build\tests\xpcshell\head.js:_run_next_test:1650
[task 2020-08-14T22:09:41.976Z] 22:09:41     INFO -  Z:\task_1597439414\build\tests\xpcshell\head.js:run:777
[task 2020-08-14T22:09:41.976Z] 22:09:41     INFO -  Z:\task_1597439414\build\tests\xpcshell\head.js:_do_main:248
[task 2020-08-14T22:09:41.976Z] 22:09:41     INFO -  Z:\task_1597439414\build\tests\xpcshell\head.js:_execute_test:577
[task 2020-08-14T22:09:41.976Z] 22:09:41     INFO -  -e:null:1
[task 2020-08-14T22:09:41.976Z] 22:09:41     INFO -  exiting test
[task 2020-08-14T22:09:41.976Z] 22:09:41     INFO -  NS_ERROR_ABORT:
[task 2020-08-14T22:09:41.976Z] 22:09:41     INFO -  _abort_failed_test@Z:\task_1597439414\build\tests\xpcshell\head.js:833:20
[task 2020-08-14T22:09:41.976Z] 22:09:41     INFO -  do_report_result@Z:\task_1597439414\build\tests\xpcshell\head.js:934:5
[task 2020-08-14T22:09:41.976Z] 22:09:41     INFO -  Assert<@Z:\task_1597439414\build\tests\xpcshell\head.js:73:21
[task 2020-08-14T22:09:41.977Z] 22:09:41     INFO -  proto.report@resource://testing-common/Assert.jsm:233:10
[task 2020-08-14T22:09:41.977Z] 22:09:41     INFO -  equal@resource://testing-common/Assert.jsm:275:8
[task 2020-08-14T22:09:41.977Z] 22:09:41     INFO -  test_Capabilities_ctor@Z:/task_1597439414/build/tests/xpcshell/tests/testing/marionette/test/unit/test_capabilities.js:414:8
[task 2020-08-14T22:09:41.977Z] 22:09:41     INFO -  _run_next_test@Z:\task_1597439414\build\tests\xpcshell\head.js:1650:11
[task 2020-08-14T22:09:41.977Z] 22:09:41     INFO -  run@Z:\task_1597439414\build\tests\xpcshell\head.js:777:9
[task 2020-08-14T22:09:41.978Z] 22:09:41     INFO -  _do_main@Z:\task_1597439414\build\tests\xpcshell\head.js:248:6
[task 2020-08-14T22:09:41.978Z] 22:09:41     INFO -  _execute_test@Z:\task_1597439414\build\tests\xpcshell\head.js:577:5
[task 2020-08-14T22:09:41.978Z] 22:09:41     INFO -  @-e:1:1
[task 2020-08-14T22:09:41.978Z] 22:09:41     INFO -  exiting test
[task 2020-08-14T22:09:41.978Z] 22:09:41     INFO -  (xpcshell/head.js) | test run_next_test 14 finished (2)
[task 2020-08-14T22:09:41.978Z] 22:09:41     INFO -  <<<<<<<
Flags: needinfo?(hskupin)

I forget to update the Marionette xpcshell tests. Running a try build now and will push soon again.

Flags: needinfo?(hskupin)
Attachment #9169830 - Attachment description: Bug 1650872 - [marionette] Allow setWindowRect capability for all desktop but not Android. → Bug 1650872 - [marionette] Fix handling of setWindowRect capability for GeckoView.
Attachment #9169830 - Attachment description: Bug 1650872 - [marionette] Fix handling of setWindowRect capability for GeckoView. → Bug 1650872 - [marionette] Allow setWindowRect capability for all desktop but not Android.
Pushed by hskupin@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/1f03b2cb3e24
[marionette] Allow setWindowRect capability for all desktop but not Android.  r=marionette-reviewers,maja_zf
Status: ASSIGNED → RESOLVED
Closed: 4 years ago
Resolution: --- → FIXED
Target Milestone: --- → 81 Branch

Thank you for the fix Henrik.

I noticed that the Fenix fennec-production builds are still using gecko 79.
e.g.
https://firefox-ci-tc.services.mozilla.com/tasks/index/mobile.v2.fenix.fennec-production.2020.08.18.latest

So, Greg, I'm expecting you'll see this same problem.
Which production build are you try to add?

Given that beta has already been merged to release, there is no way for uplift.

Thanks a lot for working on this :whimboo and :acreskey! It's unfortunate we can't get the fix uplifted in any way though.

Flags: needinfo?(gmierz2)

:whimboo, :acreskey would either of you know when we might expect this to hit release or who I could ask this about?

Flags: needinfo?(hskupin)
Flags: needinfo?(acreskey)

Greg, I would ask ryanvm, he might be able to make a good guess as to when Fenix production builds will be on gv81.
(Noting that I believe the Fenix team may time this based on other factors).

Flags: needinfo?(acreskey)

Ok thanks! :ryanvm, would you know approximately when this patch might make it into fenix release?

Flags: needinfo?(hskupin) → needinfo?(ryanvm)

Fx81 is due to ship on September 22.
https://wiki.mozilla.org/Release_Management/Calendar

Flags: needinfo?(ryanvm)

BTW, I'd be open to considering this for a ride-along should we need to ship new Fx80/GV80 builds. Feel free to nominate for release approval if it'd be helpful.

I think it would be great to do that because at the moment, the release version of Fenix is not usable for testing through selenium. Would you have a link to the process for nominating for release approval?

Flags: needinfo?(ryanvm)

Details link on the attachment. Set the approval-mozilla-release dropdown to ? and answer the questions on the form that pops up.

Flags: needinfo?(ryanvm)

Comment on attachment 9169830 [details]
Bug 1650872 - [marionette] Allow setWindowRect capability for all desktop but not Android.

Beta/Release Uplift Approval Request

  • User impact if declined: This impacts the ability for developers to test their webpages on Fenix. Without this patch, it's not possible to test the release version of Fenix through selenium (the primary way to test on this browser).
  • Is this code covered by automated tests?: Yes
  • Has the fix been verified in Nightly?: Yes
  • Needs manual test from QE?: No
  • If yes, steps to reproduce:
  • List of other uplifts needed: None
  • Risk to taking this patch: Low
  • Why is the change risky/not risky? (and alternatives if risky): This fixes an issue in Marionette where the capability for setWindowRect was allowed for Android when it shouldn't be (and it was not possible to disable). This bug is only reproducible with release builds because of the browser naming. There's no risk in uplifting this patch.
  • String changes made/needed:
Attachment #9169830 - Flags: approval-mozilla-release?

Thanks Ryan! :whimboo, is there anything that might be missing/needed in the uplift request?

Flags: needinfo?(hskupin)

Sounds all fine. Thanks for doing the request.

Flags: needinfo?(hskupin)

Comment on attachment 9169830 [details]
Bug 1650872 - [marionette] Allow setWindowRect capability for all desktop but not Android.

approved for 80.0.x

Attachment #9169830 - Flags: approval-mozilla-release? → approval-mozilla-release+
Product: Testing → Remote Protocol
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: