Description
Product: cli
Expectation: In the environment that requires a certificate under the proxy, cli can work with Firefox.
Actual: In the environment that requires a certificate under the proxy, cli get an error "Error: InsecureCertificateError" with Firefox.
detail
If I run @axe-core/cli with --browser firefox
, --show-errors
in an environment that requires a certificate under a proxy,
I get the following error.
(No error is output when using Chrome and Edge.)
Error: InsecureCertificateError
at Object.throwDecodedError (C:\Users\user\AppData\Roaming\npm\node_modules\@axe-core\cli\node_modules\selenium-webdriver\lib\error.js:522:15)
at parseHttpResponse (C:\Users\user\AppData\Roaming\npm\node_modules\@axe-core\cli\node_modules\selenium-webdriver\lib\http.js:549:13)
at Executor.execute (C:\Users\user\AppData\Roaming\npm\node_modules\@axe-core\cli\node_modules\selenium-webdriver\lib\http.js:475:28)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async Driver.execute (C:\Users\user\AppData\Roaming\npm\node_modules\@axe-core\cli\node_modules\selenium-webdriver\lib\webdriver.js:735:17) {
remoteStacktrace: 'WebDriverError@chrome://remote/content/shared/webdriver/Errors.jsm:186:5\n' +
'InsecureCertificateError@chrome://remote/content/shared/webdriver/Errors.jsm:307:5\n' +
'checkReadyState@chrome://remote/content/marionette/navigate.js:62:24\n' +
'onNavigation@chrome://remote/content/marionette/navigate.js:333:39\n' +
'emit@resource://gre/modules/EventEmitter.jsm:160:20\n' +
'receiveMessage@chrome://remote/content/marionette/actors/MarionetteEventsParent.jsm:44:25\n'
}
Motivation: Because I need to evaluate web pages by @axe-core/cli using Firefox in an environment that requires certificates under proxy.
axe-core version: 4.4.3
@axe-core/cli: 4.4.3
- Node version: v16.13.1
- Platform: Windows 10 Pro 21H2 , Firefox
Assumption of cause :
Unlike Chrome and Edge, Firefox references its own configuration file for certificates. The current cli does not seem to have a mechanism to reference that configuration file.
https://support.mozilla.org/en-US/kb/profiles-where-firefox-stores-user-data
How to fix :
This error was resolved by changing the code in @axe-core/cli
to use the Firefox profile (cert9.db
).
We tried the following in the environment at hand and confirmed that it works properly.
- Import the certificate in the Firefox browser.
- Store Firefox profile (
cert9.db
) in an arbitrary folder (e.g.C:/work/profile
). - add the following to
https://github.com/dequelabs/axe-core-npm/blob/develop/packages/cli/src/lib/webdriver.ts
・L3:
import * as chromedriver from 'chromedriver';
import { Builder, Capabilities, WebDriver } from 'selenium-webdriver';
import * as chrome from 'selenium-webdriver/chrome';
+ import * as firefox from 'selenium-webdriver/firefox';
import { WebdriverConfigParams } from '../types';
・L27:
} else {
builder = new Builder().forBrowser(config.browser);
+ if (config.browser === 'firefox') {
+ const options = new firefox.Options();
+ options.setProfile('C:/work/profile');
+ builder.setFirefoxOptions(options);
}
https://www.selenium.dev/documentation/webdriver/capabilities/firefox/