ruby.wasmのE2Eテストをデバッグする - @ledsun blog で、Response.urlにリダイレクト後のURLが入っていない現象を観測しました。
MDNには
url プロパティの値は、あらゆるリダイレクトの後に得られる最終的な URL になります。
とあります。矛盾しているように思えます。 問題への理解を深めるために、よりシンプルな環境でRespose.urlの動作を確認します。
次のようにリダイレクトレスポンスを返すサーバーを作成します。
require 'webrick' server = WEBrick::HTTPServer.new(Port: 3000) # リダイレクトの設定 server.mount_proc '/redirect' do |req, res| res.status = 302 res['Location'] = 'anywhere' end trap 'INT' do server.shutdown end server.start
起動します。
ruby server.rb
ブラウザで http://localhost:3000 を開きます。
404ページが表示されます。 今回はHTMLの内容には興味がありません。 これで十分です。
開発コンソールを開きます。 次のようにfetch APIを使って、redirectするURLにリクエストを送り、レスポンスを得ます。
response = await fetch('redirect')
Response.url は "http://localhost:3000/anywhere"
です。
リダイレクト後のURLが入っています。
前回観測した現象と異なります。
MDNの記述と同じ動作をします。
PlayWrightの実行環境が特殊なのでしょうか?
謎です。