개요
Selenium보다 빠르고 최신이며 Capybara-DSL보다 구문이 더 명확합니다. 토론을 참조하세요.
주의 Playwright는 Capybara DSL과 함께 사용할 수 있어 기존 프로젝트에 적합할 것 같습니다. 하지만 적어도 제가 테스트한 결과 Capybara-DSL로 작성된 기존 사양이 유지되도록 구성하는 것은 불가능했습니다. 다시 작성해야 했어요.
문서에서 파생
설정
playwright_helper와 같은 파일
require 'rails_helper' require 'capybara' require 'playwright' RSpec.configure do |config| # ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # Docs https://playwright-ruby-client.vercel.app/docs/article/guides/rails_integration_with_null_driver # ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ video_dir = '/tmp/rails-system-test-videos' config.before :all, type: :system do FileUtils.rm_rf(video_dir) FileUtils.mkdir(video_dir) end class CapybaraNullDriver < Capybara::Driver::Base def needs_server? true end end Capybara.register_driver(:null) { CapybaraNullDriver.new } config.around(driver: :null) do |example| driven_by :null Playwright.create(playwright_cli_executable_path: './node_modules/.bin/playwright') do |playwright| playwright.chromium.launch(headless: true) do |browser| browser.new_context( record_video_dir: video_dir, baseURL: Capybara.current_session.server.base_url ) do |context| # for requests this timeout can be too short, but for most steps it should be good # You can increase this in every selector on the test context.set_default_timeout(1500.0) @page = context.new_page # custom login process page.goto('/login-page', timeout: 50000) # first load may last longer ... example.run end if passed? FileUtils.rm(page.video.path) else puts "file://#{page.video.path}" end end end end end
그리고 테스트:
require 'playwright_helper' RSpec.describe "pw", type: :system, driver: :null do let(:page) { @page } it 'test' do page.goto('/') end end
개요
위 내용은 시스템 테스트의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!