Unable to find Mozilla geckodriver に対処する

エラー発生

f:id:matt-note:20181019203134p:plain

 

メッセージの通り、以下の URL にアクセスしてダウンロード。

 

 解凍したら、以下のようになる

f:id:matt-note:20181019203400p:plain

この geckodriver を PATH に移動させれば良いとのこと。

$ sudo cp geckodriver /usr/local/bin

を実行する

f:id:matt-note:20181019203632p:plain

参考:Ruby selenium webdriver unable to find Mozilla geckodriver - Stack Overflow

 

確認してみる。PATH にコピーできた。

f:id:matt-note:20181019203845p:plain

 

テストを実行してみる

f:id:matt-note:20181019204128p:plain

f:id:matt-note:20181019204138p:plain

フィーチャースペックで、UI テストを実行できた。2個の examples による実行時間は、上記のように、13秒ほどかかった。

 

なお、Firefoxバージョンは 62.0.3、

f:id:matt-note:20181019205120p:plain

geckodriver のバージョンは 0.23.0 で試したところ、問題なく動作させることができた。

Capybara の click_button メソッドのドキュメントを読んでみる

ドキュメント

f:id:matt-note:20181019191758p:plain

参考:Method: Capybara::Node::Actions#click_button — Documentation for jnicklas/capybara (master)

 

上記のように、クリックするボタンについては、id や値、タイトルから探すようになっているとのこと。

画像のリンクについては、alt属性を指定して、ボタンを見つけることができるとのこと。

 

使ってみる

とりあえず、テストで以下のように書いたとき、

f:id:matt-note:20181019192915p:plain

 

以下のように、value="Log in" となっているボタンをクリックする。

f:id:matt-note:20181019192926p:plain

f:id:matt-note:20181019192947p:plain

 

Capybara をRSpec と一緒に使う場合

ログインボタンを押す場合は、以下のような流れになる。visit メソッドでパスに GET リスエストを送って、「Sign in」リンクをクリックして、入力欄に Email と password の値を fill_in して、click_button メソッドを使って、フォームの値を送信してログインする。

ログインしたあとの動作のテストについては、expect { } の中でテストしていく流れになる。

f:id:matt-note:20181019194931p:plain

Ruby で正規表現を使ってみる

Regexp クラス

/文字/ のように、/ で文字を囲むと、正規表現オブジェクトを生成する。

f:id:matt-note:20181019125908p:plain

 

sub メソッド

第一引数に Regexp オブジェクトを渡して、第二引数に文字列で値を渡す。これで最初に正規表現にマッチした部分を、文字列の値に変換することができる。

f:id:matt-note:20181019130222p:plain

 

第二引数に数値を渡してみると、エラーになる

f:id:matt-note:20181019131546p:plain

 

なお、substitution は「代入・代用・交換」といった意味になっている。

f:id:matt-note:20181019130346p:plain

gsub メソッド

第一引数の正規表現パターンにマッチした全ての部分を、第二引数で渡した文字列に置換できる

f:id:matt-note:20181019130953p:plain

 

+

直前のパターンの1回以上の繰り返しにマッチする

f:id:matt-note:20181019142636p:plain

?

直前のパターンの0回または1回の繰り返しにマッチする

f:id:matt-note:20181019142620p:plain

f:id:matt-note:20181019143432p:plain

上記のように、/hoo?/ でも、ho にマッチする

 

参考:

Ruby 正規表現の使い方

Rubyの正規表現の使い方をマスターしよう!match/gsub | CodeCampus

atom の「最終行を超えてスクロール」を有効化する

設定を変更する

Ctrl + , で設定画面を開く。「エディタ設定」->「最終行を超えてスクロール」のチェックボックスをクリックして有効化する。

f:id:matt-note:20181019102551p:plain

 

以下のように、最終行を超えてスクロールできるようになる。個人的に、これはとても便利。

f:id:matt-note:20181019102802p:plain

 

参考

Atomでファイルの最終行を超えてスクロールする設定

VS Code のテーマを Atom One Dark テーマに変更する

インストール

以下のURLにアクセスして、「コピー」ボタンをクリック

VSCode を起動して、Ctrl + P を入力。入力欄に、上でコピーしたものを貼り付けて、Enter を押す。これでインストールが開始する。

 

設定

テーマをインスールしただけではデザインは変更されない。「ファイル」->「基本設定」->「配色テーマ」をクリック。「Atom One Dark」があるのでクリックして選択すれば、Atom One dark テーマに適用される。

f:id:matt-note:20181019101336p:plain

 

デザイン

デザインは、以下のようになる。

f:id:matt-note:20181019101504p:plain

 

ただし、erb のシンタックスハイライトが上書きされて、消えてしまう模様。この点は残念

f:id:matt-note:20181019101626p:plain

 

erb については、自分でカスタマイズする必要があるかも。他に良いテーマがあれば、そちらにしたいところ…。

Capybara の page とは何なのか

唐突に出てきた page 。なんだこれは…

f:id:matt-note:20181018201059p:plain

参考:https://qiita.com/morrr/items/0e24251c049180218db4#visit

 

とにかく、上記のように visit メソッドを実行した戻り値が、暗黙的に page 変数に格納されるとのこと。

RSpec の expect にブロックを渡す

everyday rails を読んでいて、以下のような表記が出てきたので、メモっておく。とにかく読めるくらいにはならないと先に進めない。

f:id:matt-note:20181018190345p:plain

 

f:id:matt-note:20181018192617p:plain

参考:使えるRSpec入門・その2「使用頻度の高いマッチャを使いこなす」