Page:テストするwebページの、要素や共通の関数を抽出して格納するクラス。
Page Model | Best Practices | Guides | Docs
上記の中の表現で、下記の講座でいう「良くない書き方」があるので、それを書き直してみる。
シナリオベースのコードをgithugでググって参考にするとか
リファクタリングの仕方があるのがよかった。ていうか、全部良い。暗記したい。
test('Click check boxes and then verify their state', async t => {
for (const feature of page.featureList) {
await t
.click(feature.label)
.expect(feature.checkbox.checked).ok();
}
});
↑ for文で回すのが良くない
test('Click check boxes and then verify their state', async t => {
const checkbox1 = Selector(`Support for testing on remote devices`);
await t
.click(checkbox1)
.expect(feature.checkbox.checked).ok();
});
class Page {
constructor () {
this.nameInput = Selector('#developer-name');
this.triedTestCafeCheckbox = Selector('#tried-test-cafe');
this.populateButton = Selector('#populate');
this.submitButton = Selector('#submit-button');
this.results = Selector('.result-content');
this.commentsTextArea = Selector('#comments');
this.featureList = [
new Feature('Support for testing on remote devices'),
new Feature('Re-using existing JavaScript code for testing'),
new Feature('Running tests in background and/or in parallel in multiple browsers'),
new Feature('Easy embedding into a Continuous integration system'),
new Feature('Advanced traffic and markup analysis')
];
this.osList = [
new OperatingSystem('Windows'),
new OperatingSystem('MacOS'),
new OperatingSystem('Linux')
];