要素内のdocumentにスイッチするための機能である。以下の例では、ログインフォームの中に操作(=要素探索の範囲)を限定している。in')})この書き方はとてもわかりやすく、気に入っている。ログインフォームが表示されていることを期待している、ということがコードで端的に表現されており、可読性が高い。PageObjectを利用する場合も、「あるページにいる状態」を定義して、その中で操作するようにすれば、英文法としても自然に見える。})というわけで、本稿でトライするのは、英文法として自然に読めるPageObjectの実装である。コンテキストを明示するためにスクリプトを「囲う」ものという意味合いである。以下のように実装する。定義するベースになるテストコードは以下の通り。Evans')});このテストコードは、以下のような手順で構成されている。遷移する」以降のステップがログインフォーム内の操作であることはテストコードの中には全く書かれていない。結果、その後のテストコードで期待しているページに遷移していたというだけである。そこで、まずはログインページに遷移していることを表明するコードにしてみる。以下のように書けば、あるコードがログインページの中で動作することを表明できるだろう。生やす形で実装したい。オブジェクトを拡張するためのものである。オブジェクトに反映される。書くことも出来るのだが、読みやすさと、後述の「特定のページ内でのみ有効なメソッド」の実装のために、このようにしている。メールアドレスの入力などの手順が、サイト内のどのページで行われるべきかを、コードで表現出来ており、可読性が高い。オブジェクトを拡張する。中で拡張し、それをコールバック関数に渡すようにする。});}テストコードはこんな風になる。いうメソッドは、ログインページの中でしか利用できない。テストコードを書く時にカスタムコマンドをやたらと定義してしまうと、そのコマンドが今いる画面で利用可能なのかどうかが分からなかったりして、最終的に実装を見に行くことになってしまって大変だったりする。メソッドの利用範囲をページに閉じることで、そういった手間はなくなる。場合はそれ自体がスクリプトの起点となってしまい、特殊なケースでの拡張性が低いことがあった。属さないもののように見えてしまう。いうコンテキストに属していることを表している。追加する手間を省ける。型定義を与えておこう。使って引数の型を定義するためのものだ。メソッドに補完が効くようになる。試してみたい人向け情報CodeceptJSとPlayWrightを用いて検証している。"codeceptjs-pageobject-example",};めんどくさい人のためにサンプルリポジトリも用意しておいた。https://github.com/tsuemura/codeceptjs-pageobject-example/Cypressでもやってみたい人向けにもちろん出来る。いう独自のコマンドを定義している。fn(cy);});多分他のフレームワークでもあまり労力をかけずに実装可能だろう。興味があればぜひチャレンジしてみてほしい。みんなご存知!そうこの俺こそは...。バッジを贈って著者を応援しようバッジを受け取った著者にはZennから現金やAmazonギフトカードが還元されます。みんなご存知!そうこの俺こそは...。Proよくある質問LinksX(Twitter)GitHubメディアキットLegal利用規約プライバシーポリシ。