Heim > Web-Frontend > js-Tutorial > Systemtests

Systemtests

DDD
Freigeben: 2024-12-18 13:00:17
Original
540 Leute haben es durchsucht

System Testing

Übersicht

Warum Dramatiker?

Es ist schneller und neuer als Selenium und hat eine klarere Syntax als Capybara-DSL, siehe Diskussion.

Achtung Playwright kann mit Capybara DSL verwendet werden, was für bestehende Projekte gut klingen würde. Aber zumindest in meinen Tests war es nicht möglich, es so zu konfigurieren, dass bestehende, in Capybara-DSL geschriebene Spezifikationen bestehen bleiben konnten. Ich musste sie umschreiben.

Dramatiker innerhalb von Rails/RSpec

Abgeleitet von Docs

Einrichtung

  • Entferne alle Selen-Edelsteine
  • Edelstein-Wasserschwein zum Gruppentest hinzufügen
  • Gem Playwright-Ruby-Client zum Gruppentest hinzufügen
  • npm i --save-dev playwright (im Gegensatz zu docs nicht mit npx i installieren ... weil es keine Abhängigkeiten installieren würde)

eine Datei wie 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
Nach dem Login kopieren

und ein Test:

require 'playwright_helper'

RSpec.describe "pw", type: :system, driver: :null do

  let(:page) { @page }

    it 'test' do
      page.goto('/')
    end
end
Nach dem Login kopieren

Übersicht

Das obige ist der detaillierte Inhalt vonSystemtests. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage