PIYO - Tech & Life -

RSpec

seed_dumpを使ったRSpec高速化にはsequenceのリセットが必要だった

先日書いたこれが動かなくなってしまい、よく調べていたらプライマリキー(つまりid)が被って追加できないよってことになってしまったみたいです。 https://blog.piyo.tech/posts/2018-08-16-test-date-with-seed-dump/ 確かに、関連を維持するためにidも含めてテストデータを登録していますので、sequenceの値がおかしくなっていた可能性があり …

Capybaraで別タブで開いたWindowを閉じる

利用規約を確認しないとチェックボックスにチェックできないみたいな仕組みを簡易で作りまして、それのテストを書くときにちょっと迷ったので残しときます。 利用規約のリンクを押すと別タブで規約ページが開くと同時にチェックボックスのdisabledが外れる仕組みになっているとします。

seed_dumpを使ってRailsのテストデータの読み込みを高速化した

そこそこ複雑なデータを持たないとフィーチャテストを動かせないようなプロジェクトがありまして、きちんとしたデータを作るためにはCSVファイルからデータを取り込んでリレーション作るという必要がありました。 テストケースによってはこれを使わないこともありますが、全体の40%程度はこのデータがないとうまくいかないので、それぞれのテストの前に取り込み処理が入るります。これにより全体を流すのにめちゃくちゃ時間 …

rspec-parameterizedで条件だけが異なるテストコードをDRYに書く

テストのロジックは同じだけど、入力値とそれに対する結果が異なるみたいなテストをシンプルにかけるrspec-parametrizedというgemがあります。 https://github.com/tomykaira/rspec-parameterized 存在は知ってたけどしばらく使ってなかったんですが、試しに入れてみたらすごくシンプルに使えるし、パラメータ変えてテストできるようなメソッドにしようみ …

RSpecで失敗したテストだけを対象にできる--only-failuresオプション

プロジェクトの根幹ぽいところをちょっと変えたばっかりにテストの半分ぐらいがが失敗してしまって、1箇所直したら全部パスするみたいなことはあるあるなんじゃないかと思います。RSpecでは失敗したテストのみを対象に再実行できるオプションがあるので、それを使うと良いです。

Circle CIでHeadless Chrome 解決編

CircleCIでHeadless Chromeを使ったテストが動かないっぽい件で、ひとまずunless使ってGemfileを条件分岐するというお行儀の悪いことをしていましたが、もしかしたら直ったような気がするので、改めてメモしておきます。

[追記あり]再びCircleCIでsession not created exception

4/19あたりからCircleCIでまたこのエラーがでるようになりました。 session not created exception: Chrome version must be >= 65.0.3325.0 多分、Gemfileに入れていたchromedriver-helperとDockerイメージに入っているChromeのバージョンが衝突しているのが原因だと思います。以前の調査記事で …

Headless ChromeのテストがCircleCI上で動かなかった

おとといの記事でHeadlessChromeを使ってテストするようにしたよ、と書きました。 https://blog.piyo.tech/posts/2018-03-28-headless-chrome/ ですが、CircleCIではこんな感じのエラーを吐いて動きませんでした。 Selenium::WebDriver::Error::SessionNotCreatedError: session …