PHP(Selenium)、例外発生時にスクリーンショットを撮影

これを行うと、seleniumをdockerコンテナの中で走らせている状態で何か例外が見つかっても再びサイトを開いたり、自動テストを走らせたりすることなくデバックすることができます。 以前編集したハックノートから、try catchで例外発生時の処理に入り、

}catch(\Exception $e){
    $dir = __DIR__ . "/exceptions/";  //スクリーンショット保存先のディレクトリ
    $files = glob($dir."*.jpg");  //ディレクトリ内のjpgの数を数える
    $number = sprintf('%02d', count($files)+1); //ディレクトリ内のjpg+1を新しいスクリーンショットファイルの名前とする
    $driver->takeScreenshot($dir . $number .".jpg"); //スクリーンショット!
}

これでオッケーです。

ただこのままだと例外が発生するたびに画像がどんどん溜まってしまうので、別途自動テスト実行前に溜まった画像を破棄すれば良さそうですね。

foreach (glob(__DIR__ . "/exceptions/*.jpg") as $file) {
    unlink($file);
}

これを適切なところで実行してやるといいと思います