Githubアクションから静的ウェブアプリケーションURLへのアクセス
9515 ワード
私は最近、プロジェクトに取り組んでいました.私は、CCI/CDパイプラインの間のヘッドホンテストを実行するために、Playwrightを使ってテストを加えたいと思っていました.
ありがたいことに、私の同僚はすでにそれを行う方法についてのブログ記事を書いています.
テストが
今、私のテストには問題があります.
スタティックWebアプリケーションの展開のログを調べた場合、URLがそこに出力されていることに気付きました.カスタムドメインを持つURLかPRのプリプロダクション環境URLであるかどうかにかかわらず、GithubアクションはURLを認識しています.
次の停止、
Nityaのパターンに従って、我々はワークフローで新しい仕事を作成して、PlayWrightテストを実行します.
以下のように私たちの
そして、そのように、もはやあなたのテストのためのハードコードURLを持っている必要があります.
Githubアクションステップと仕事から
あなたが私が作った変更を見ることができるように、私はPR for Nitya's sample applicationを作成しました、そして、どのようにgithubアクションが現在動くかについて示します.
ありがたいことに、私の同僚はすでにそれを行う方法についてのブログ記事を書いています.
テストが
main
ブランチで実行されているときに、これはうまく動作しますが、静的なWebアプリケーションではpre-production environments for pull requestsとなり、独自のURLで展開されます.今、私のテストには問題があります.
test("basic test", async ({ page }) => {
await page.goto("https://bit.ly/recipes-for-aj");
await expect(page).toHaveTitle("Recipes 4 AJ");
await page.locator("text=Tags").click();
});
それは常に生産現場に移動しますので!では、どうやってこれを解決できますか?展開のURLを見つける
スタティックWebアプリケーションの展開のログを調べた場合、URLがそこに出力されていることに気付きました.カスタムドメインを持つURLかPRのプリプロダクション環境URLであるかどうかにかかわらず、GithubアクションはURLを認識しています.
次の停止、
azure/static-web-apps-deploy
は、アクションがどのように動作するかを見てください.それは私たちがそれの内部を見ることができないことを意味します、しかし、それは我々が actions.yaml
をチェックして、以下を見ることができるので、それは大きな問題でありません:outputs:
static_web_app_url:
description: "Url of the application"
すごい!アクションは実際にURLを出力します.ジョブ全体の出力の使用
Nityaのパターンに従って、我々はワークフローで新しい仕事を作成して、PlayWrightテストを実行します.
jobs:
build_and_deploy_job:
# snip
test:
name: "Test site using Playwright"
timeout-minutes: 60
needs: build_and_deploy_job
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@master
- uses: actions/setup-node@v2
with:
node-version: '14.x'
- name: Install dependencies
run: |
cd testing
npm ci
npx playwright install-deps
npx playwright install
- name: Run Playwright Tests
continue-on-error: false
working-directory: testing
run: |
npx playwright test --reporter=html --config playwright.config.js
また、環境変数を使用してURLを提供するテストを更新します.test("basic test", async ({ page }) => {
await page.goto(process.env.SWA_URL);
// Be assertive
});
環境変数として取得するには、まずbuild_and_deploy_job
から出力しなければなりません.jobs:
build_and_deploy_job:
if: github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.action != 'closed')
runs-on: ubuntu-latest
name: Build and deploy website
outputs:
static_web_app_url: ${{ steps.swa.outputs.static_web_app_url }}
steps:
- uses: actions/checkout@v3
with:
submodules: true
- name: Build And Deploy
id: swa
# snip
重要な部分はstatic_web_app_url: ${{ steps.swa.outputs.static_web_app_url }}
であり、step
swa
がこのjob
の出力をしたい出力を持つというGithubの行動を伝えていた.以下のように私たちの
test
ジョブで使用できます.test:
name: "Test site using Playwright"
timeout-minutes: 60
needs: build_and_deploy_job
runs-on: ubuntu-20.04
env:
SWA_URL: ${{ needs.build_and_deploy_job.outputs.static_web_app_url }}
steps:
# snip
スニペット${{ needs.build_and_deploy_job.outputs.static_web_app_url }}
は、依存しているジョブ(needs.build_and_deploy_job
)の出力を見て、我々が望むものを見つけて、環境変数としてそれをセットするために、Githubアクションに指示します.そして、そのように、もはやあなたのテストのためのハードコードURLを持っている必要があります.
結論
Githubアクションステップと仕事から
output
変数を活用することによって、我々はPlayWrightを使って自動化されたテストのような何かをすることになるとき、我々のGithubワークフローを単純化することができます.あなたが私が作った変更を見ることができるように、私はPR for Nitya's sample applicationを作成しました、そして、どのようにgithubアクションが現在動くかについて示します.
Reference
この問題について(Githubアクションから静的ウェブアプリケーションURLへのアクセス), 我々は、より多くの情報をここで見つけました https://dev.to/azure/accessing-a-static-web-apps-url-from-github-actions-9nテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol