【Playwright】Error: EPERM: operation not permittedの解消のためにしたこと
PlaywrightのテストコードをWindows Powershellで実行しようとした際に、こちらのエラーが発生しました。「test-resultsファイルの操作が許可されていないよ」という旨のエラーのようです。
Error: EPERM: operation not permitted, rmdir 'C:\Users\-(省略)-\test-results'
実際のエラー画面はこちらです。

1行目でテストコードを実行。2行目が該当エラー
エラーの解消に手間取ったので、誰かの参考になればと思い記事にしました。
エラーが解消した操作
結論、PCのエクスプローラーからtest-resultsファイルを手動で削除することで、エラーが解消しました。テストコードを実行するたびにtest-resultsファイルの手動削除が必要になるかと思いきや、初めの1回だけでOKでした。
(※基本的にtest-resultsファイルはPlaywrightテストの結果を格納するファイルですが、重要なテスト情報・テスト結果などが含まれる際の削除の操作はご留意ください🙇)
Error: EPERM: operation not permitted エラーの意味
EPERM(Error: PERMission)エラーは、ディレクトリやファイルの削除操作に対して許可がないか、プロセスが使用中である場合に発生します。
という訳で、エラーの原因は以下にあると思っていました。
- ファイルが開いた状態になっている、または
- ファイルの削除許可が無い
エラー解消のために試したこと
一般的な解決方法を一通り試したもののなぜか効果はありませんでした。
エラーが解消しそうな気もしますが...
1.test-resultsフォルダを閉じる
先程の原因(仮)「ファイルが開いた状態になっている」に対応する解消法です。
しかし、test-resultsファイルを閉じて再実行しても同様にエラーとなっていました。
2. ファイルの読み取り専用をOFFに変更する
先程の原因(仮)「ファイルの削除許可が無い」に対応する解消法になると思っていました。
しかし、エクスプローラー>test-resultsファイル>プロパティ>セキュリティから「読み取り専用」をOFFにしてOK/適用を行っても、再度開くと「読み取り専用」がONになるという状態でした。こちらはWindowsの仕様のようで、「ファイルの読み取り専用をOFFの状態にする」ことが上手くできなかったため断念。
こちらの記事で「読み取り専用」機能について詳しく説明されています。
【考察】なぜtest-resultsファイルの操作が必要になる?
初めてこのエラー文を見たときに、なぜtest-resultsファイルの操作が必要になるのか疑問でした。以下は、エラーの背景にこのような流れがあるのではないかという考察です。
- Local環境では、テスト実行の度にtest-resultsファイル内のデータ(テスト結果)が更新される
- test-resultsファイルでは前回のデータを削除→新しいデータを更新する
- 「前回のデータを削除」の操作が上手くいかなかったため、新しいデータの更新も上手くいかずエラーとなった...?
💭記事の内容はあくまで一例ですので、参考程度にご覧ください。
Discussion