From 63c7d4e3d86f7744f23d2b362bba356d4737ba14 Mon Sep 17 00:00:00 2001 From: Martin Fischer Date: Mon, 6 Mar 2023 19:47:06 +0100 Subject: [PATCH] feat(cli): better error message for ChromeDriver version mismatch Fixes #679. --- packages/cli/src/bin/index.ts | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/packages/cli/src/bin/index.ts b/packages/cli/src/bin/index.ts index 856d269a..728c4077 100644 --- a/packages/cli/src/bin/index.ts +++ b/packages/cli/src/bin/index.ts @@ -15,6 +15,7 @@ import { import axeTestUrls from '../lib/axe-test-urls'; import event from '../lib/events'; import { startDriver } from '../lib/webdriver'; +import { error as selenium_error } from 'selenium-webdriver'; const cli = async ( args: OptionValues, @@ -107,7 +108,28 @@ const cli = async ( disable }; try { - const outcome = await axeTestUrls(urls, testPageConfigParams, events); + let outcome; + try { + outcome = await axeTestUrls(urls, testPageConfigParams, events); + } catch (e) { + // Provide a more user-friendly error message when there's a ChromeDriver/Chrome version mismatch. + if (e instanceof selenium_error.SessionNotCreatedError && e.message.includes( + 'This version of ChromeDriver only supports' + // This string has to match the error message printed by chromedriver, see + // https://chromium.googlesource.com/chromium/src/+/refs/tags/110.0.5481.194/chrome/test/chromedriver/chrome_launcher.cc#300. + )) { + console.error(error('Error: %s'), e.message); + console.log(`\nConsider installing a matching version of ChromeDriver with: + + npm install -g chromedriver@ + +(where is the desired version of Chromedriver.) +And running \`axe\` with \`--chromedriver-path $(npm root -g)/chromedriver/bin/chromedriver\`.`) + process.exit(2); + } else { + throw e; + } + } if (silentMode) { process.stdout.write(JSON.stringify(outcome, null, 2)); return;