ruby.wasmにPlayWrightで書かれたE2Eテストがあります。 https://github.com/ruby/ruby.wasm/blob/84707d656d007577947ced6c14a9a33e3ffd4033/packages/npm-packages/ruby-wasm-wasi/test-e2e/integrations/browser-script.spec.ts
テストに失敗したときに、次のようにタイムアウトエラーだけが表示されることがあります。
ロジック途中でエラーが起き、アサーションまで到達しないときによく起きます。 この情報から失敗の原因を突き止めるのは大変です。
PlayWrightではブラウザを起動し、その中でruby.wasmを実行しています。 JavaScriptやRubyスクリプトでデバッグプリントしても、ブラウザのコンソールに出力されます。 テストを実行しているコンソールには表示されません。
そこで、テストケースで次のようなイベントリスナーを設定します。
page.on("console", (msg) => console.log("LOG:", msg.text()));
実行しているページでコンソールへの出力があったら、テストの実行画面に出力します。 次のようにテスト実行画面でデバッグプリントの内容が確認できます。
この情報から、僕はResponse.urlにはリダイレクト後のURLが入っていることを期待していたのに、リダイレクト前のURLがとれたので上手く動いていないことがわかりました。