BS - Web UI Tests #27
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: BS - Web UI Tests | |
| env: | |
| TAGS: web_tests | |
| BASE_URL: https://opensource-demo.orangehrmlive.com | |
| BROWSERSTACK_USER: ${{secrets.BROWSERSTACK_API_USERNAME}} | |
| BROWSERSTACK_ACCESS_KEY: ${{secrets.BROWSERSTACK_ACCESS_KEY}} | |
| HRM_USER_NAME: ${{ secrets.HRM_USER_NAME }} | |
| HRM_PASSWORD: ${{ secrets.HRM_PASSWORD }} | |
| USING_ENV: "BROWSERSTACK" | |
| on: | |
| schedule: | |
| - cron: '30 22 * * *' | |
| workflow_dispatch: | |
| inputs: | |
| tags: | |
| description: Gherkin Tags | |
| required: true | |
| default: web_tests | |
| baseurl: | |
| description: Base URL | |
| required: true | |
| type: choice | |
| default: https://opensource-demo.orangehrmlive.com | |
| options: | |
| - https://opensource-demo.orangehrmlive.com | |
| - other | |
| inputurl: | |
| description: Other than default Base URL (e.g portal url) | |
| required: true | |
| default: https://opensource-demo.orangehrmlive.com | |
| os: | |
| description: 'Operating system (window or mac)' | |
| required: true | |
| type: choice | |
| default: mac | |
| options: | |
| - mac | |
| - window | |
| browser: | |
| description: Browser Name | |
| required: true | |
| type: choice | |
| default: chrome | |
| options: | |
| - chrome | |
| - firefox | |
| - edge | |
| - safari | |
| jobs: | |
| web-scheduled-regression: | |
| if: github.event_name == 'schedule' | |
| strategy: | |
| max-parallel: 1 | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - name: Win Chrome | |
| baseurl: https://opensource-demo.orangehrmlive.com | |
| tags: web_tests | |
| config_file: ./env_configs/win_chrome.json | |
| html_report: win-chrome | |
| - name: Win Firefox | |
| baseurl: https://opensource-demo.orangehrmlive.com | |
| tags: 'web_tests and firefox' | |
| config_file: ./env_configs/win_firefox.json | |
| html_report: win-firefox | |
| - name: Win Edge | |
| baseurl: https://opensource-demo.orangehrmlive.com | |
| tags: web_tests | |
| config_file: ./env_configs/win_edge.json | |
| html_report: win-edge | |
| - name: Mac Firefox | |
| baseurl: https://opensource-demo.orangehrmlive.com | |
| tags: 'web_tests and firefox' | |
| config_file: ./env_configs/mac_firefox.json | |
| html_report: mac-firefox | |
| - name: Mac Chrome | |
| baseurl: https://opensource-demo.orangehrmlive.com | |
| tags: web_tests | |
| config_file: ./env_configs/mac_chrome.json | |
| html_report: mac-chrome | |
| - name: Mac Edge | |
| baseurl: https://opensource-demo.orangehrmlive.com | |
| tags: web_tests | |
| config_file: ./env_configs/mac_edge.json | |
| html_report: mac-edge | |
| - name: Mac Safari | |
| baseurl: https://opensource-demo.orangehrmlive.com | |
| tags: web_tests | |
| config_file: ./env_configs/mac_safari.json | |
| html_report: mac-safari | |
| - name: Mac Chrome Visual | |
| baseurl: https://opensource-demo.orangehrmlive.com | |
| tags: visual | |
| config_file: ./env_configs/mac_chrome.json | |
| html_report: mac-chrome-visual | |
| name: ${{ matrix.name }} - Regression | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Setup Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.9" | |
| - name: BrowserStack Env Setup | |
| uses: browserstack/github-actions/setup-env@master | |
| with: | |
| username: ${{secrets.BROWSERSTACK_API_USERNAME}} | |
| access-key: ${{secrets.BROWSERSTACK_ACCESS_KEY}} | |
| - name: BrowserStack Local Tunnel Setup | |
| uses: browserstack/github-actions/setup-local@master | |
| with: | |
| local-testing: start | |
| local-identifier: random | |
| - name: Check out code | |
| uses: actions/checkout@v4 | |
| - name: Setup dependencies | |
| run: | | |
| sh setup_install.sh | |
| - name: Run All Tests | |
| run: | | |
| env | |
| source $HOME/.qa-venv/bin/activate | |
| sh ci_run_web.sh ${{secrets.BROWSERSTACK_API_USERNAME}} ${{secrets.BROWSERSTACK_ACCESS_KEY}} "${{ matrix.config_file }}" "${{ matrix.tags }}" "${{ matrix.baseurl }}" "${{secrets.SLACK_WEBHOOK_URL}}" "${{secrets.TEAMS_WEBHOOK_URL}}" | |
| - name: BrowserStackLocal Stop | |
| uses: browserstack/github-actions/setup-local@master | |
| with: | |
| local-testing: stop | |
| if: ${{ always() }} | |
| - name: Upload HTML run report in the Artifacts Folder | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ matrix.html_report }} | |
| path: | | |
| ./*.html | |
| ./output_data/ | |
| ./assets/ | |
| ./test_data/visualtesting/test/*.png | |
| if: ${{ always() }} | |
| web-manual-run: | |
| if: github.event_name != 'schedule' | |
| name: Manual - ${{ inputs.os }} ${{ inputs.browser }} - ${{ inputs.tags }} - ${{ inputs.baseurl }} | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Validate Input Parameter | |
| id: validate_input | |
| run: | | |
| if [[ -z "${{ github.event.inputs.tags }}" ]]; then | |
| echo "Invalid input: 'tags' is required but not provided." | |
| exit 1 | |
| fi | |
| if [[ -z "${{ github.event.inputs.baseurl }}" ]]; then | |
| echo "Invalid input: 'baseurl' is required but not provided." | |
| exit 1 | |
| fi | |
| if [[ -z "${{ github.event.inputs.browser }}" ]]; then | |
| echo "Invalid input: 'browser' is required but not provided." | |
| exit 1 | |
| fi | |
| if [[ -z "${{ github.event.inputs.os }}" ]]; then | |
| echo "Invalid input: 'os' is required but not provided." | |
| exit 1 | |
| fi | |
| if [[ "${{ inputs.os }}" == "window" && "${{ inputs.browser }}" == "safari" ]]; then | |
| echo "Invalid input: Safari is not supported on Windows OS." | |
| exit 1 | |
| fi | |
| - name: Setup Python | |
| id: setup_python | |
| if: steps.validate_input.outcome == 'success' | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.9" | |
| - name: BrowserStack Env Setup | |
| id: bs_env_setup | |
| if: steps.validate_input.outcome == 'success' | |
| uses: browserstack/github-actions/setup-env@master | |
| with: | |
| username: ${{secrets.BROWSERSTACK_API_USERNAME}} | |
| access-key: ${{secrets.BROWSERSTACK_ACCESS_KEY}} | |
| - name: BrowserStack Local Tunnel Setup | |
| id: bs_local_tunnel_setup | |
| if: steps.bs_env_setup.outcome == 'success' | |
| uses: browserstack/github-actions/setup-local@master | |
| with: | |
| local-testing: start | |
| local-identifier: random | |
| - name: Check out code | |
| id: co_code | |
| if: steps.bs_local_tunnel_setup.outcome == 'success' | |
| uses: actions/checkout@v4 | |
| - name: Setup dependencies | |
| id: setup_dependencies | |
| if: steps.co_code.outcome == 'success' | |
| run: | | |
| sh setup_install.sh | |
| - name: Run Manual Job Tests | |
| id: run_manual_job | |
| if: steps.setup_dependencies.outcome == 'success' | |
| run: | | |
| TAGS="${{ github.event.inputs.tags }}" | |
| if [[ "${{ github.event.inputs.baseurl }}" == "other" ]]; then | |
| BASE_URL="${{ github.event.inputs.inputurl }}" | |
| else | |
| BASE_URL="${{ github.event.inputs.baseurl }}" | |
| fi | |
| if [[ "${{ github.event.inputs.browser }}" == "chrome" && "${{ github.event.inputs.os }}" == "window" ]]; then | |
| BROWSER=./env_configs/win_chrome.json | |
| fi | |
| if [[ "${{ github.event.inputs.browser }}" == "firefox" && "${{ github.event.inputs.os }}" == "window" ]]; then | |
| BROWSER=./env_configs/win_firefox.json | |
| fi | |
| if [[ "${{ github.event.inputs.browser }}" == "edge" && "${{ github.event.inputs.os }}" == "window" ]]; then | |
| BROWSER=./env_configs/win_edge.json | |
| fi | |
| if [[ "${{ github.event.inputs.browser }}" == "chrome" && "${{ github.event.inputs.os }}" == "mac" ]]; then | |
| BROWSER=./env_configs/mac_chrome.json | |
| fi | |
| if [[ "${{ github.event.inputs.browser }}" == "firefox" && "${{ github.event.inputs.os }}" == "mac" ]]; then | |
| BROWSER=./env_configs/mac_firefox.json | |
| fi | |
| if [[ "${{ github.event.inputs.browser }}" == "safari" && "${{ github.event.inputs.os }}" == "mac" ]]; then | |
| BROWSER=./env_configs/mac_safari.json | |
| fi | |
| if [[ "${{ github.event.inputs.browser }}" == "edge" && "${{ github.event.inputs.os }}" == "mac" ]]; then | |
| BROWSER=./env_configs/mac_edge.json | |
| fi | |
| env | |
| source $HOME/.bp-venv/bin/activate | |
| sh ci_run_web.sh ${{secrets.BROWSERSTACK_API_USERNAME}} ${{secrets.BROWSERSTACK_ACCESS_KEY}} "$BROWSER" "$TAGS" "$BASE_URL" "${{secrets.SLACK_WEBHOOK_URL}}" "${{secrets.TEAMS_WEBHOOK_URL}}" | |
| - name: BrowserStackLocal Stop | |
| uses: browserstack/github-actions/setup-local@master | |
| with: | |
| local-testing: stop | |
| if: ${{ always() }} | |
| - name: Upload HTML run report in the Artifacts Folder | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: pytest-html-results | |
| path: | | |
| ./*.html | |
| ./output_data/ | |
| ./assets/ | |
| ./test_data/visualtesting/test/*.png | |
| if: ${{ always() }} |