#node.js #automated-tests #playwright #playwright-test
Вопрос:
Мне нужно провести несколько тестов с использованием драматурга среди разных версий Chromium. У меня есть разные папки Chromium с разными версиями, но я не знаю, как переключаться с одной версии на другую, используя интерфейс командной строки для запуска тестов. Какая-нибудь помощь? Спасибо 🙂
Ответ №1:
Макс Шмитт прав: библиотека не гарантирует работу с хромиумами, не входящими в комплект поставки. В любом случае, вы можете попробовать несколько браузеров на основе Хрома в executablePath
. Поскольку он не встроен в тест драматурга, вам нужно будет реализовать его самостоятельно.
Примечание: таким образом, вы теряете часть простоты теста драматурга.
В моем примере я использовал Jest в качестве тестового бегуна, поэтому yarn add --dev jest
это необходимо. Последний аргумент CLI, зарезервированный для версии браузера, можно получить с process.argv.slice(-1)[0]
помощью внутри узла, например, вы можете указать своим тестам, какую версию браузера вы хотите использовать. Здесь они будут edge
, chrome
и по умолчанию они входят в комплект chromium
.
MS Edge (Хром)
yarn test chrome.test.js edge
Хром
yarn test chrome.test.js chrome
Chromium (по умолчанию — в комплекте с драматургом) (но любая строка или отсутствие этого аргумента также запустят его по умолчанию)
yarn test chrome.test.js chromium_default
chrome.test.js
(с путями к исполняемым файлам для Windows)
const playwright = require('playwright')
let browser
let page
beforeAll(async function () {
let chromeExecutablePath
switch (process.argv.slice(-1)[0]) {
case 'chrome':
chromeExecutablePath = 'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe'
break
case 'edge':
chromeExecutablePath = 'C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe'
break
default:
chromeExecutablePath = ''
}
browser = await playwright.chromium.launch({
headless: false,
executablePath: chromeExecutablePath
})
page = await browser.newPage()
})
describe('Google Search', function () {
test('should respond with HTTP 200 - OK', async function () {
const response = await page.goto('https://google.com')
const responseCode = response.status()
expect(responseCode).toBe(200)
})
afterAll(async function () {
await browser.close()
})
})
Комментарии:
1. Привет, извините за задержку, может быть, я не совсем ясно выразился о том, что я хочу сделать: для версий chromium я имею в виду, например, «chromium-888113» или «chromium-907428» и так далее и тому подобное. Способен ли ваш код адаптироваться для достижения этой цели? Потому что, как я вижу, вы указали путь к файлу .exe этих браузеров (тоже полезно). Поэтому я задаюсь вопросом, могу ли я указать путь «C:UsersadminAppDataLocalms-playwright*имя браузера*» для переключения по желанию между различными версиями chromium, просто чтобы посмотреть, как мой тест плохо себя ведет с ними.
2. Кроме того, поскольку я не использую Jest в качестве бегуна, какие строки кода будут отличаться от использования собственного тестового бегуна, предлагаемого Драматургом? Заранее благодарю вас 🙂
3. (1) вы можете сделать вышеописанное с любыми версиями Chrome, конечно, это означает, что вам нужно установить их самостоятельно и получить правильный путь к исполняемому файлу таким же образом (это необходимо, так как Playwright устанавливает только последнюю совместимую версию Chromium). (2) Я не так хорошо знаком с бегуном драматурга, насколько я вижу, вы не можете установить там собственный путь к исполняемому файлу, следовательно, вам нужно отказаться от него для другого бегуна (например, Шутка).
4. И знаете ли вы, возможно ли иметь разных участников тестирования в одной папке проекта? Может быть, это тривиальный вопрос, но я действительно новичок в этом мире 😀
5. Я уверен, что можно иметь несколько бегунов, но смешивать их в рамках проекта может быть сложно. Я знаком только с Шуткой.
Ответ №2:
Вы можете использовать этот executablePath
аргумент при запуске браузера для использования пользовательского исполняемого файла. Смотри здесь. Обратите внимание, что это работает только с браузерами на базе Chromium, см. Здесь.
const playwright = require('playwright');
(async () => {
const browser = await playwright.chromium.launch({
executablePath: '/your/custom/chromium'
});
const page = await browser.newPage();
await page.goto('http://whatsmyuseragent.org/');
await page.screenshot({ path: `example.png` });
await browser.close();
})();
Кроме того, Драматург проверяет только последнюю стабильную версию, поэтому другие версии Chromium могут не вести себя должным образом. Смотрите здесь, в разделе выпуски.
Комментарии:
1. Как я прокомментировал в разделе @theDavidBarton answer, я хотел бы переключиться на разные версии chromium, включая некоторые старые, чтобы посмотреть, как мой код ведет себя неправильно.