Closed Bug 1493069 Opened 6 years ago Closed 6 years ago

WebExtension can't installed in Firefox 62.0 by selenium java due "Extension @searchencrypt is not correctly signed"

Categories

(Toolkit :: Add-ons Manager, defect)

62 Branch
defect
Not set
normal

Tracking

()

RESOLVED DUPLICATE of bug 1385057
Tracking Status
firefox62 --- affected
firefox63 --- unaffected
firefox64 --- unaffected

People

(Reporter: xiaoruxing, Unassigned)

Details

User Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:60.0) Gecko/20100101 Firefox/60.0
Build ID: 20180903060751

Steps to reproduce:

1) Install firefox 62.0
2) Start selenium standalone server 3.14 with geckodirver 0.21.0
3) Download a XPI file from https://addons.mozilla.org/en-US/firefox/addon/search-encrypt/?src=hp-dl-promo
4) Try to installed XPI with selenium java
                 FirefoxProfile profile = null;
	        String fileName = "C:\\candle\\xpi\\search_encrypt-2.3.4-an+fx.xpi";
		File xpiFile1 = new File(fileName);
		
		profile = new FirefoxProfile();
		
		FirefoxOptions options = new FirefoxOptions();
		options.setLogLevel(FirefoxDriverLogLevel.TRACE);
		
//          profile.setPreference("devtools.toolbox.selectedTool", "netmonitor");
		profile.setPreference("devtools.toolbox.footer.height", 0);
		profile.setPreference("devtools.devedition.promo.enabled", false);
		profile.setPreference("devtools.devedition.promo.shown", false);
//		profile.addExtension(xpiFile);
		profile.addExtension(xpiFile1);
		options.addArguments("-devtools");
		options.setProfile(profile);
		String hub = "9.42.29.133";
		URL seleniumHub = new URL("http://" + hub + ":4444/wd/hub");
		RemoteWebDriver driver = new RemoteWebDriver(seleniumHub, options);
		driver.manage().window().maximize();

6) Log can be found at https://gist.github.com/barancev/f6a596dcd73157c57a36d54d66c73e3b
Selenium and Geckodirver said they not owned this problem but should be problem of firefox web extension.
https://github.com/mozilla/geckodriver/issues/1367
https://github.com/SeleniumHQ/selenium/issues/6403


Actual results:

After firefox startup by WebDriver , the web extendsion is not installed


Expected results:

After firefox startup by WebDriver , the web extendsion should be installed
So, which versions of Firefox are affected for you by this problem? Can you please give feedback for 60, 61, 62, 63, and 64?

Checking the log I can see that 60 and 64 are fine, while 62 is broken? If that is the case I would be really interested in the results for 61, and 63 beta.

Here the failure which refers this report to:

> 1537085977849	addons.xpi-utils	WARN	Add-on @searchencrypt is not correctly signed.
> 1537085977849	addons.xpi-utils	WARN	Add-on @searchencrypt is not correctly signed.
> 1537085977849	addons.xpi-utils	WARN	addMetadata: Add-on @searchencrypt is invalid: Error: Extension @searchencrypt is not correctly signed (resource://gre/modules/addons/XPIDatabase.jsm:2395:17) JS Stack trace: addMetadata@XPIDatabase.jsm:2395:17
Component: Untriaged → Add-ons Manager
Flags: needinfo?(xiaoruxing)
Product: Firefox → Toolkit
Summary: WebExtension can't installed in Firefox 62.0 by selenium java → WebExtension can't installed in Firefox 62.0 by selenium java due "Extension @searchencrypt is not correctly signed"
It works well 61.0.2, broken in 62.0.
Flags: needinfo?(xiaoruxing)
Firefox 62.0 affect me.
From https://github.com/mozilla/geckodriver/issues/1367#issuecomment-421723246
You can see the test result of Alexei Barantsev is that works well in 60 (ESR), 63 (Dev) and 64 (Nightly), but it fails in 63 (Release). 
And I report this issued after I tested in 61.0.2 and 62.0
I'm pretty unfamiliar with selenium, but my understand was that it uses geckodriver which in turn uses marionette?  And that marionette installs extensions temporarily?  Temporary installation doesn't require signed extensions so the error from comment 1 doesn't make sense.

Henrik, can you provide the full addon manager logs?
Flags: needinfo?(hskupin)
Selenium send command to geckodriver, then geckodriver translates calls into the Marionette automation protocol by acting as a proxy between the local and remote ends. And it install extensions permanent but not temporary.
Like I said, that is inconsistent with the error reported in comment 1.
We're not going to be able to do much with this without additional logs or information.
(In reply to xiaoruxing from comment #4)
> You can see the test result of Alexei Barantsev is that works well in 60
> (ESR), 63 (Dev) and 64 (Nightly), but it fails in 63 (Release). 
> And I report this issued after I tested in 61.0.2 and 62.0

There is no 63 release yet. So which beta version are you referring to? Also which 63 dev edition release worked for you before it broke? I assume the latest 63 dev edition also fails for you?

(In reply to Andrew Swan [:aswan] from comment #5)
> I'm pretty unfamiliar with selenium, but my understand was that it uses
> geckodriver which in turn uses marionette?  And that marionette installs
> extensions temporarily?  Temporary installation doesn't require signed
> extensions so the error from comment 1 doesn't make sense.

Please note that the above is not using geckodriver to install the webextension but it's Selenium which creates a Firefox profile, and most likely stores the XPI file in a specific folder. As such this is not related to geckodriver at all. Maybe

> Henrik, can you provide the full addon manager logs?

The logs can be seen here: https://gist.github.com/barancev/f6a596dcd73157c57a36d54d66c73e3b

Andrew, do you see something specifically failing which could cause this problem?

> 1537085979243	Marionette	INFO	Listening on port 50134
> 1537085979408	Marionette	WARN	TLS certificate errors will be ignored for this session
> 1537085979438	Marionette	DEBUG	[6442450945] Frame script loaded
> 1537085979448	Marionette	DEBUG	[6442450945] Frame script registered
> сен 16, 2018 11:19:39 AM org.openqa.selenium.remote.ProtocolHandshake createSession
> INFO: Detected dialect: W3C
> 1537085979507 Marionette INFO Stopped listening on port 50134

I wonder what's happening between those lines, and why Marinonette drops the connection immediately. Which commands are getting send here? Can someone please provide a new log with the tracing output enabled?
Flags: needinfo?(hskupin) → needinfo?(barancev)
Ok, so I talked with Alexei, and this is really only a problem in Firefox 62! Earlier releases work fine, and the same for any 63 beta and dev build, and 64 Nighlty build. The log for 62 can be found here:

https://gist.github.com/barancev/f6a596dcd73157c57a36d54d66c73e3b#file-62-release

Not sure if this will ever be fixed given that this doesn't seem to be affecting our users, only those who run that through Selenium.

Andrew, please have a look.
Flags: needinfo?(barancev) → needinfo?(aswan)
Is geckodriver installing the extension unpacked in the profile?
From this line it looks like it (ie since the path does not end with .xpi)
Mapping @searchencrypt to C:\Users\alexei\AppData\Local\Temp\rust_mozprofile.hxeWYGIsju2s\extensions\@searchencrypt

Unpacked extensions have been unsupported for some time, they actually broke in 62, which appears to be consistent with what's being reported here.  Moving back to geckodriver to decide whether it should be updated or just WONTFIXed.
Component: Add-ons Manager → geckodriver
Flags: needinfo?(aswan)
Product: Toolkit → Testing
Again this is not geckodriver which installs the extension but Selenium. I do not know how the Java bindings install the extension. But I think Alexei can help here.

Andrew, what is the bug for the broken installation of unpacked extensions? I most likely think this is a dupe of it.
Component: geckodriver → Add-ons Manager
Flags: needinfo?(barancev)
Product: Testing → Toolkit
Yes, Selenium unpacks extensions. It used to work well.
Flags: needinfo?(barancev)
Its no longer supported:
https://blog.mozilla.org/addons/2018/02/22/removing-support-unpacked-extensions/
Status: UNCONFIRMED → RESOLVED
Closed: 6 years ago
Resolution: --- → DUPLICATE
Note that the Java bindings have been fixed via https://github.com/SeleniumHQ/selenium/issues/6403
You need to log in before you can comment on or make changes to this bug.