ruby.wasmのE2Eテストをデバッグする - @ledsun blog で、次のように書きました。
そこで、テストケースで次のようなイベントリスナーを設定します。
page.on("console", (msg) => console.log("LOG:", msg.text()));
ruby.wasmのソースコードをみると元々組み込まれていました。 https://github.com/ruby/ruby.wasm/blob/c5052f289be1d331e340d77f8029fb7f3bc3be24/packages/npm-packages/ruby-wasm-wasi/test-e2e/support.ts#L9-L17
if (process.env.DEBUG) { context.on("request", (request) => console.log(">>", request.method(), request.url()), ); context.on("response", (response) => console.log("<<", response.status(), response.url()), ); context.on("console", (msg) => console.log("LOG:", msg.text())); }
環境変数 DEBUG を設定すれば、そのまま使えそうです。 やってみましょう。
つぎのように、環境変数を設定してテストを実行します。
DEBUG=true rake npm:ruby-head-wasm-wasi:check
出てきました。 レスポンスステータスや、モックされたURLも表示されて便利です。
よく見ると、不思議な出力があります。
<< 200 https://cdn.jsdelivr.net/npm/ruby-head-wasm-wasi@latest/dist/redirect_to_error_on_load_twice.rb
テスト用のプロキシサーバーに、次のような301 レスポンスを返しているつもりです。
} else if (relativePath.match("redirect_to_error_on_load_twice.rb")) { route.fulfill({ status: 301, headers: { location: "error_on_load_twice.rb", }, }); }
ログでは、200と表示されています。 リダイレクトが上手く行っていないのでしょうか?
つづくリクエストはリダイレクト先に飛んでいます。 リダイレクトに従っているように見えます。
>> GET https://cdn.jsdelivr.net/npm/ruby-head-wasm-wasi@latest/dist/error_on_load_twice.rb
謎です。