Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CIにE2Eテストを追加する #869

Closed
so-c opened this issue Jul 21, 2022 · 7 comments
Closed

CIにE2Eテストを追加する #869

so-c opened this issue Jul 21, 2022 · 7 comments

Comments

@so-c
Copy link
Contributor

so-c commented Jul 21, 2022

内容

#863 で導入したPlaywrightによるE2EテストをCI(GitHub Actions)でも動くようにする

Pros 良くなる点

用意したテストの範囲でmainブランチへのエンバグを予防できる

Cons 悪くなる点

テストがFlakyだと開発の妨げになるリスクがある

実現方法

Continuous Integration | Playwright, ヘッドレスCIシステムでのテスト (Travis CI, Jenkins) | Electronを参考にGitHub Actionsに追加する

テストでのVOICEVOX_ENGINE, 音声ライブラリの扱いが難しそう。特に後者

その他

このIssueでは仕組みの実現にしぼって、どんなE2Eテストを用意するかは別に考えた方がよさそう。 #182 も参照

@so-c
Copy link
Contributor Author

so-c commented Jul 29, 2022

so-c#19 で取り組み始めのご連絡。

@so-c
Copy link
Contributor Author

so-c commented Aug 3, 2022

CIで製品版のエンジンは使えないはずなので、voicevox_engineのモック python run.py --enable_mockをCIで立ち上げようとしています。しかし、現在の実装は、外からこの形に持っていけず background.tsの書き換えが必要です。

  • .env"executionFilePath": "/Path/To/python.exe"
  • background.ts のengineProcessをspawnさせるところ。渡したい引数をハードコーディングすると
  const engineProcess = spawn(enginePath, ["run.py", "--enable_mock"], {
    cwd: path.dirname(
      "/Path/to/voicevox_engine/run.py"
    ),
  });

直し方はまだ考えていないのですが、手を入れると #429 #609 に影響しそうなのでご相談。なおモックengineを起動するには

  • enginPathとcwdが同じdirectoryにある前提を置いている
  • argsが const args = useGpu ? ["--use_gpu"] : []; の2択
    この2点を変える必要がありそうです。469行目~です

// エンジンプロセスの起動

あるいはCIではexeを使う手もありそうです。その場合、engineからexeを持ってくるActionsになりそうですがこちらは未検証。

@Hiroshiba
Copy link
Member

python経由で実行する場合に必要な箇所の洗い出し、ありがとうございます!
そちらの2箇所の変更、たしかに必要だと感じました。

まあでも、CIでexeを取ってきてしまっても良いのかなと思いました!!
どちらでも…!

@Hiroshiba
Copy link
Member

VOICEVOXエディタ側に仕様変更が入ってテストしやすくなりました!!

.envexecutionEnabled: falseとすると、run.exeを起動しようとせずに始まります。
これを使えばpython run.py --enable_mockで起動したモックエンジンを使えると思います!

@Hiroshiba
Copy link
Member

  • 設定などが保存されるuserDataDirは毎回空の方が良さそう
    • キャッシュは残してもいいけどconfig.jsonやvvpp-enginesは消したい
    • テスト時にtearDownで消す
    • あるいは環境変数などを用いてuserDataDirを外部から刺せるようにする

@Hiroshiba
Copy link
Member

がマージされました 🎉
e2eテストが書きやすくなったはず?

@Hiroshiba
Copy link
Member

で解決されていたのでcloseします!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants