diff --git a/.github/workflows/test-env-deploy.yml b/.github/workflows/test-env-deploy.yml index 97237dfd0..68581cb68 100644 --- a/.github/workflows/test-env-deploy.yml +++ b/.github/workflows/test-env-deploy.yml @@ -110,3 +110,64 @@ jobs: status: ${{ job.status }} env_url: https://${{ steps.set-domain.outputs.domain }}/storybook/index.html deployment_id: ${{ steps.storybook-deployment.outputs.deployment_id }} + + + cypress-run-critical: + needs: deploy + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v1 + + - name: Get API_URI + id: api_uri + # Search for API_URI in PR description and use default if not defined + env: + pull_request_body: ${{ github.event.pull_request.body }} + prefix: API_URI= + pattern: (http|https)://[a-zA-Z0-9.-]+/graphql/? + fallback_uri: ${{ secrets.CYPRESS_API_URI }} + run: | + echo "::set-output name=custom_api_uri::$(echo $pull_request_body | grep -Eo "$prefix$pattern" | sed s/$prefix// | head -n 1 | { read custom_uri; if [ -z "$custom_uri" ]; then echo "$fallback_uri"; else echo "$custom_uri"; fi })" + - name: Get base_URL + id: base_URL + run: | + echo "::set-output name=base_URL::https://$(echo ${GITHUB_HEAD_REF}).dashboard.saleor.rocks" + - name: Setup Node + uses: actions/setup-node@v1 + with: + node-version: 14 + + - name: Cache node modules + uses: actions/cache@v2 + env: + cache-name: cache-node-modules + with: + path: ~/.npm + key: ${{ runner.os }}-qa-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-qa-${{ env.cache-name }}- + ${{ runner.os }}-qa- + ${{ runner.os }}- + + - name: Install Dependencies + if: steps.cache-node-modules.outputs.cache-hit != 'true' + run: npm install + + - name: Cypress run critical + uses: cypress-io/github-action@v2 + env: + API_URI: ${{ steps.api_uri.outputs.custom_api_uri }} + APP_MOUNT_URI: ${{ secrets.APP_MOUNT_URI }} + CYPRESS_baseUrl: ${{ steps.base_URL.outputs.base_URL }} + CYPRESS_USER_NAME: ${{ secrets.CYPRESS_USER_NAME }} + CYPRESS_SECOND_USER_NAME: ${{ secrets.CYPRESS_SECOND_USER_NAME }} + CYPRESS_USER_PASSWORD: ${{ secrets.CYPRESS_USER_PASSWORD }} + CYPRESS_PERMISSIONS_USERS_PASSWORD: ${{ secrets.CYPRESS_PERMISSIONS_USERS_PASSWORD }} + with: + command: npm run cy:run:critical + wait-on: ${{ steps.base_URL.outputs.base_URL }} + - uses: actions/upload-artifact@v1 + with: + name: cypress-videos + path: cypress/videos diff --git a/cypress/integration/products/createProduct.js b/cypress/integration/products/createProduct.js index 6048a195c..fc0e4b1b1 100644 --- a/cypress/integration/products/createProduct.js +++ b/cypress/integration/products/createProduct.js @@ -81,8 +81,13 @@ filterTests({ definedTags: ["all", "critical"] }, () => { .get("@ProductDetails") .its("response.body") .then(resp => { - const productResp = resp.find(element => element.data.product).data - .product; + let productResp; + if (Array.isArray(resp)) { + productResp = resp.find(element => element.data.product).data + .product; + } else { + productResp = resp.data.product; + } expectCorrectProductInformation(productResp, productData); }); }); @@ -114,8 +119,13 @@ filterTests({ definedTags: ["all", "critical"] }, () => { .get("@ProductDetails") .its("response.body") .then(resp => { - const productResp = resp.find(element => element.data.product).data - .product; + let productResp; + if (Array.isArray(resp)) { + productResp = resp.find(element => element.data.product).data + .product; + } else { + productResp = resp.data.product; + } expectCorrectProductInformation(productResp, productData); expectCorrectProductVariantInformation( productResp.variants, diff --git a/package.json b/package.json index 5355fb05b..5b3bfebb1 100644 --- a/package.json +++ b/package.json @@ -274,7 +274,7 @@ "cy:open": "cypress open", "cy:run:critical:locally": "cypress run --env tags=critical --spec 'cypress/integration/navigation.js','cypress/integration/products/createProduct.js', 'cypress/integration/products/productsVariants.js','cypress/integration/checkout/purchaseWithProductTypes.js','cypress/integration/checkout/stocksInCheckout.js' --reporter cypress-mochawesome-reporter --reporter-options reportDir='cypress/reports',overwrite=true,charts=true", "cy:run:refactored:locally": "cypress run --env tags=refactored --spec 'cypress/integration/navigation.js','cypress/integration/products/createProduct.js', 'cypress/integration/products/productsVariants.js','cypress/integration/checkout/purchaseWithProductTypes.js','cypress/integration/checkout/stocksInCheckout.js' --reporter cypress-mochawesome-reporter --reporter-options reportDir='cypress/reports',overwrite=true,charts=true", - "cy:run:critical": "cypress run --env tags=critical --spec 'cypress/integration/navigation.js','cypress/integration/products/*.js','cypress/integration/checkout/*.js'", + "cy:run:critical": "cypress run --env tags=critical --spec 'cypress/integration/navigation.js','cypress/integration/products/createProduct.js', 'cypress/integration/products/productsVariants.js','cypress/integration/checkout/purchaseWithProductTypes.js','cypress/integration/checkout/stocksInCheckout.js'", "cy:run:allEnv": "cypress run --env tags=all --record --key 1fe833f5-fca4-4454-ac55-943815b91c6c", "test:e2e:run": "start-server-and-test start http://localhost:9000 cy:run", "test:e2e:run:record": "start-server-and-test start http://localhost:9000 cy:run:record",