Skip to content

worklow fix

worklow fix #74

name: PS817 + E2E Cypress
on: [push]
jobs:
Cypress-E2E-817:
runs-on: ubuntu-latest
env:
NGROK_TOKEN: ${{ secrets.NGROK_TOKEN }}
strategy:
fail-fast: false
matrix:
include:
- prestashop: 'PS817'
make: 'make e2eh817'
subdomain: 'demoshop8'
port: '8002'
yml: 'docker-compose.8.yml'
url: 'https://demoshop8.ngrok.io'
test_spec: 'cypress/e2e/**'
steps:
- name: Checkout
uses: actions/[email protected]
- run: wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
shell: bash
- run: unzip -qq -o ngrok-stable-linux-amd64.zip
shell: bash
- run: ./ngrok authtoken ${{ secrets.NGROK_TOKEN }}
shell: bash
- run: ./ngrok http -region=us -subdomain=${{ matrix.subdomain }} ${{ matrix.port }} > ngrok.log &
shell: bash
- name: Install composer
run: composer i
- name: Install package
run: |
npm ci
npm update
npx browserslist@latest --update-db
- name: ${{ matrix.prestashop }} installing / Module Install and Uninstall testing
run: |
${{ matrix.make }}
- name: Waiting for Ngrok tunnel
run: |
URL="${{ matrix.url }}"
TIMEOUT=120
start_time=$(date +%s)
while true; do
current_time=$(date +%s)
elapsed_time=$((current_time - start_time))
if [ "$elapsed_time" -ge "$TIMEOUT" ]; then
echo "Timeout reached. Ngrok tunnel is not ready within $TIMEOUT seconds."
exit 1
fi
response=$(curl -s -o /dev/null -w "%{http_code}" "$URL")
if [ "$response" = "302" ]; then
echo "URL is returning 302 HTTP status code, Ngrok tunnel is reached, good to go!"
break # Exit the loop if the response is 302
else
echo "URL is not ready yet, because Ngrok sessions are all in use at the moment, please wait. Retrying to build the Ngrok tunnel again in 5 seconds..."
sleep 5 # Wait for 5 seconds before retrying
./ngrok http -region=us -subdomain=${{ matrix.subdomain }} ${{ matrix.port }} > ngrok.log &
fi
done
- name: Running ${{ matrix.prestashop }} Cypress E2E tests
run: |
export CYPRESS_SAFERPAY_EMAIL='${{ secrets.SAFERPAY_EMAIL }}'
export CYPRESS_SAFERPAY_PASSWORD='${{ secrets.SAFERPAY_PASSWORD }}'
export CYPRESS_SAFERPAY_USERNAME_TEST='${{ secrets.PS1786_SAFERPAY_USERNAME_TEST }}'
export CYPRESS_SAFERPAY_PASSWORD_TEST='${{ secrets.PS1786_SAFERPAY_PASSWORD_TEST }}'
export CYPRESS_SAFERPAY_CUSTOMER_ID_TEST='${{ secrets.PS1786_SAFERPAY_CUSTOMER_ID_TEST }}'
export CYPRESS_SAFERPAY_TERMINAL_ID_TEST='${{ secrets.PS1786_SAFERPAY_TERMINAL_ID_TEST }}'
export CYPRESS_SAFERPAY_MERCHANT_EMAILS_TEST='${{ secrets.SAFERPAY_MERCHANT_EMAILS_TEST }}'
export CYPRESS_SAFERPAY_FIELDS_ACCESS_TOKEN_TEST='${{ secrets.PS1786_SAFERPAY_FIELDS_ACCESS_TOKEN_TEST }}'
export NGROK_URL='${{ env.NGROK_URL }}'
npx cypress cache prune
npm install -D cypress
npm ci
npx cypress run --headed --spec "${{ matrix.test_spec }}"
# - name: Running ${{ matrix.prestashop }} Cypress E2E tests
# uses: cypress-io/github-action@v6
# with:
# record: true
# parallel: true
# group: 'SaferpayTests'
# spec: ${{ matrix.test_spec }}
# env:
# CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# CYPRESS_SAFERPAY_EMAIL: ${{ secrets.SAFERPAY_EMAIL }}
# CYPRESS_SAFERPAY_PASSWORD: ${{ secrets.SAFERPAY_PASSWORD }}
# CYPRESS_SAFERPAY_USERNAME_TEST: ${{ secrets.PS1786_SAFERPAY_USERNAME_TEST }}
# CYPRESS_SAFERPAY_PASSWORD_TEST: ${{ secrets.PS1786_SAFERPAY_PASSWORD_TEST }}
# CYPRESS_SAFERPAY_CUSTOMER_ID_TEST: ${{ secrets.PS1786_SAFERPAY_CUSTOMER_ID_TEST }}
# CYPRESS_SAFERPAY_TERMINAL_ID_TEST: ${{ secrets.PS1786_SAFERPAY_TERMINAL_ID_TEST }}
# CYPRESS_SAFERPAY_MERCHANT_EMAILS_TEST: ${{ secrets.SAFERPAY_MERCHANT_EMAILS_TEST }}
# CYPRESS_SAFERPAY_FIELDS_ACCESS_TOKEN_TEST: ${{ secrets.PS1786_SAFERPAY_FIELDS_ACCESS_TOKEN_TEST }}
# NGROK_URL: ${{ env.NGROK_URL }}
- name: Archive videos and screenshots of Cypress testing
if: ${{ always() }}
uses: actions/[email protected]
with:
name: videos_screenshots
retention-days: 2
path: |
cypress/videos
cypress/screenshots