こんにちは!林です。
弊社では一部プロジェクトにPlaywrightでの自動テストを採用しているのですが
Playwrightの自動テストにファイルアップロードのテストを追加し、
DockerでPlaywrightの自動テストを実行した際に、エラーとなった原因と解決方法をご紹介したいと思います。
Playwrightでファイルアップロードする方法
まずは、ファイルアップロードする方法から。
対象画面にファイル選択ダイアログを表示する「選択」ボタンが用意されています。
with page.expect_file_chooser() as fc_info:
# 画面上のファイル選択ボタンを押下
page.get_by_text("選択", exact=True).click()
# 表示されたファイル選択ダイアログでファイルを選択
file_chooser = fc_info.value
file_chooser.set_files("tests/file/file_import_test.csv")
これで、ファイル選択ダイアログを表示し、ダイアログで「開く」を押下した状態になります。
ファイル選択ダイアログでファイル選択した後は、
そのファイルを読み込んで内容をDBに登録するなどしています。
Dockerで実行するとエラーになる
ローカル環境で実行している際は問題なく動いていたのですが、
Docker上で同じ処理を動かすとエラーになりました。
原因は、local_settings.pyの設定漏れ。
settings.pyの最後でlocal_settings.pyを読み込む作りになっているのですが
local_settings.pyに定義されている「PYTHONPATH」がDocker用のパスになっていなかったため
Docker上でPYTHONPATHが見つからず、エラーとなっていました。
local_settings.pyにPYTHONPATHを設定し、Docker上でも
ファイルアップロードテストが正常に動作するようになりました。