@ledsun blog

無味の味は佳境に入らざればすなわち知れず

ruby.wasmのE2Eテストをデバッグする その2

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

謎です。