みーのぺーじ

みーが趣味でやっているPCやソフトウェアについて.Python, Javascript, Processing, Unityなど.

TestCafeのAssersionが面白い

TestCafeはブラウザーでE2Eテストを実行するためのライブラリーです.

webdriverが不要,任意のブラウザーで実行可能な素晴らしいライブラリですが,非同期処理を駆使してJavaScriptでテストコードを実装する必要があるので少し扱いにくいという欠点もあります.

devexpress.github.io

TestCafeのAssersionは少し特殊で,Smart Assertion Query Mechanismが実装されているようです.

Assert | TestCafe

簡単に言うと,Assersionで期待される結果になるまで自動的に待ってくれます.

したがって,以下のJavaScriptは異なる意味を持ちます.

const el = Selector("#submit");
return await el.exists;
const el = Selector("#submit");
await t.expect(el.exists).eql(true);
return await el.exists;

1つめの例は,このコードが実行される時点で#submitが存在するかどうかを返します.

2つめの例は,#submitが出現するまで自動的に待ち,実際に存在すればtrueを返し,存在しなければAssertionErrorとなります.

もし#submitが存在しない状態で両者を実行すると,1つめの例ではfalseとなるのに対して,2つめの例では待機中に#submitが出現すればtrueとなりますので,両者の結果が異なる場合があります.

ブラウザーで実行するときは,DOMの描写などが非同期で実行される場合が多いので,このように期待される結果になるまで自動的に待つ機能は,E2Eテストで使いやすいです.