LoginSignup
4
0

More than 3 years have passed since last update.

Salesforceで画像回帰テストのGitHub Actions対応

Last updated at Posted at 2019-12-12

SalesforceでVisual Regression Testやってみる の続きとして、GitHub Actionsに対応してみました。

と言いつつまだほとんど対応できてないのでmasterにマージしてません。
https://github.com/mino0123/salesforce-vrt-boilerplate/tree/ghactions


name: xbrowser
on: [push]
jobs:
  vrt-ie:
    runs-on: windows-latest
    steps:
      - uses: actions/checkout@v1
      - uses: actions/setup-node@v1
        with:
          node-version: 12
      - run: npm install
      - run: npm test
        env:
          SF_USERNAME: ${{ secrets.SF_USERNAME }}
          SF_PASSWORD: ${{ secrets.SF_PASSWORD }}
          BROWSER: "internet explorer"
      - uses: actions/upload-artifact@master
        if: always()
        with:
          name: test-screenshots
          path: test/screenshots
  vrt-safari:
    runs-on: macos-latest
    steps:
      - uses: actions/checkout@v1
      - uses: actions/setup-node@v1
        with:
          node-version: 12
      - run: npm install
      - name: Run safari driver
        run: |
          sudo safaridriver --enable & safaridriver -p 0 &
      - run: npm test
        env:
          SF_USERNAME: ${{ secrets.SF_USERNAME }}
          SF_PASSWORD: ${{ secrets.SF_PASSWORD }}
          BROWSER: safari
      - uses: actions/upload-artifact@master
        if: always()
        with:
          name: test-screenshots
          path: test/screenshots
  vrt-chrome:
    runs-on: windows-latest
    steps:
      - uses: actions/checkout@v1
      - uses: actions/setup-node@v1
        with:
          node-version: 12
      - run: npm install
      - run: npm test
        env:
          SF_USERNAME: ${{ secrets.SF_USERNAME }}
          SF_PASSWORD: ${{ secrets.SF_PASSWORD }}
          BROWSER: chrome
      - uses: actions/upload-artifact@master
        if: always()
        with:
          name: test-screenshots
          path: test/screenshots
  vrt-firefox:
    runs-on: windows-latest
    steps:
      - uses: actions/checkout@v1
      - uses: actions/setup-node@v1
        with:
          node-version: 12
      - run: npm install
      - run: npm test
        env:
          SF_USERNAME: ${{ secrets.SF_USERNAME }}
          SF_PASSWORD: ${{ secrets.SF_PASSWORD }}
          BROWSER: firefox
      - uses: actions/upload-artifact@master
        if: always()
        with:
          name: test-screenshots
          path: test/screenshots

CircleCIで撮った画像と比較

CircleCIでの実行結果が残っているので、試しに画像を比較してみました。
差分が少なければいろいろな環境で同時にCIしていくのもできたりしないかな、と思っていたのですが……

CircleCIでの実行結果(Chrome)

account-save-end_chrome.png

GitHub Actionsでの実行結果(Chrome)
account-save-end_chrome.png

差分
account-save-end_chrome.png

ウィンドウに関わる設定をもとから行っていないので違いがあるのは覚悟していましたが、
ここまで違うとは...パッと見で

  • ウィンドウサイズ
  • 文字の太さ
  • 遅延ロードされるアイコンのロード具合

が違ってます。

クロスブラウザテストが闇というのは先達の記事でも言われていることなのである程度の覚悟はしてましたが、実際に自分でやってみて痛感しました。

IE

Selenium情報が多くて回り道しましたが、WebdriverIOだと公式情報を参照したらでてきた wdio-iedriver-service パッケージだけで 起動まではできました。
http://v4.webdriver.io/guide/services/iedriver.html

しかしその先にまっていたのはChromeだと2分で終わるテストを22分かけて落ちる結果でした。
遅いのは覚悟してましたが、ここまで違うとは。
また、スクロールしつつ画面全体をキャプチャするwdio-screenshot-v5が非対応っぽく、うまく画像が撮れてませんでした。

2_internet explorer.png

Edge

DISM.exe /Online /Add-Capability /CapabilityName:Microsoft.WebDriver~~~~0.0.1.0 を実行すればよいのですが、A Windows capability name was not recognized.のエラーが出てダウンロードできませんでした。当方Windowsに詳しくないためv4を待つかということでここで断念しました。


GitHub Actionsのワークフローを利用してクロスブラウザのE2Eテストを自動化する | Money Forward Engineers' Blog

多少あがいてみましたが、付け焼き刃では超えることができない深淵でした。。。

Safari

これも。。。

まとめ

わりと軽い気持ちでやってみたのですが、実際にやってみると CI環境xプラットフォームxブラウザ という3次元闇構造に飲み込まれてしまいました。
クロスブラウザで一番やりたいSafariとEdgeが対応できてないしこれPuppeteerでいいのでは?

あと調べても大体Seleniumの情報で、WebDriverIOにそのまま適用していいものなのかやってみないとわからなかったのも苦労しました。

全開WebDriverIOで始めたので今回もそのまま使っていますが、ツールごとの書き方や動作の差異がどのくらいあるのか気になってるので、時間があればSeleniumやPupperteerも試してみたいです(時間があれば……)。

参考情報

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0