chrome(v66以降)でseleniumテストが動画の自動再生でハングする


条件

  • chrome(v66以上)
  • seleniumを利用した自動テストを行っている
  • 自動再生のEventを引っ掛けようとしている

解決法

  • --autoplay-policy=no-user-gesture-requiredを利用する。

具体的には


var webdriver = require('selenium-webdriver');
var chromeCapabilities = webdriver.Capabilities.chrome();
var chromeOptions = {
'args': ['--autoplay-policy=no-user-gesture-required']
};
chromeCapabilities.set('chromeOptions', chromeOptions);
var driver = new webdriver.Builder().withCapabilities(chromeCapabilities).build();

概要

かねてから噂されていたらしい、Chromeの自動再生拒否のバージョンがついにやってきた。
(実装はちょっと前からされてたみたい、デフォルトにされたのが今回のアプデ)

seleniumでの設定方法でもつまずいたが、ブラウザ経由で自動再生のフラグを変更したいなら chrome://flags/#autoplay-policyで操作する。

一応、以下の三種類が用意されている。

  • No user gesture is required.
  • User gesture is required for cross-origin iframes.
  • Document user activation is required.

一ユーザーとしてはありがたい限りの機能だが、テストが落とされるのは困ったので共有したい。

ちなみに、IMEとやらでサイトごとに自動再生を許可するドメインを確定する仕組みがあるみたい。
ただ、自分のchrome://media-engagementを見ても全部、拒否られてたのでよくわかんない。

自動再生拒否を回避してどうしても自動再生で動画を流したい人はGoogle公式行けばいいと思います。
回避できる手段について日本語でまとめたものがQiitaにあったのでペタリ

休日が開けたら、テストがtimeoutしてて月曜日から憂鬱な気分に振り回される人が少なくなるように祈ります。

参考: