Upgrade to Pro — share decks privately, control downloads, hide ads and more …

The basic architecture of Capybara

Yuka Kato
November 03, 2019

The basic architecture of Capybara

Yuka Kato

November 03, 2019
Tweet

More Decks by Yuka Kato

Other Decks in Programming

Transcript

  1. ゆかお( ゆかお( ) is… ) is… 永和システムマネジメント所属、7 年⽬ よちよち.rb という初学者限定の

    Ruby コミュニテ ィを主催している(していた) @yucao24hours @yucao24hours
  2. こんなかんじのやつ書くよね こんなかんじのやつ書くよね test "creating a Post" do visit posts_url click_on

    "New Post" fill_in "Title", with: @post.title fill_in "Content", with: @post.content click_on "Create Post" assert_text "Post was successfully created" click_on "Back" end
  3. More about Capybara More about Capybara なぜE2E テストがたまに落ちるのか by @mtsmfm

    https://speakerdeck.com/mtsmfm/how-do-e2e- tests-fail-randomly
  4. さっきの” タスク” に⽴ち返る さっきの” タスク” に⽴ち返る “Capybara を使った E2E テストで、

    Headless Chrome を使って テストを実⾏できるようセットアッ プする”
  5. たとえば… たとえば… RackTest は JS を使った処理の実⾏はできない 最近のアプリだとだいたい JS つかってるからあ んまり⾒ないかも

    Selenium は JS を実⾏できる Apparition は Poltergeist という別のドライバと互 換性を保つようにして作られている
  6. さっきの” タスク” に⽴ち返る さっきの” タスク” に⽴ち返る “Capybara を使った E2E テストで、

    Headless Chrome を使って テストを実⾏できるようセットアッ プする”
  7. Capybara のドライバ設定例 Capybara のドライバ設定例 Capybara.register_driver :my_driver do |app| Capybara::Selenium::Driver.new(app, browser:

    :chrome, desired_capabilities: Selenium::WebDriver::Remote::Capabiliti chrome_options: { args: %w(headless disable-gpu window-size=1680,1050), }, ) ) end Capybara.javascript_driver = :my_driver
  8. という API を使って、 という名前をつけてドライバを定義し… Capybara.register_driver :my_driver do |app| Capybara::Selenium::Driver.new(app, browser:

    :chrome, desired_capabilities: Selenium::WebDriver::Remote::Capabiliti chrome_options: { args: %w(headless disable-gpu window-size=1680,1050), }, ) ) end