Как перейти к определенной версии браузера с помощью Playwright?

#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, включая некоторые старые, чтобы посмотреть, как мой код ведет себя неправильно.