Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.
 
 
 
 
 
 

185 rader
6.0 KiB

  1. name: UI
  2. on:
  3. pull_request:
  4. workflow_dispatch:
  5. push:
  6. branches: [ develop ]
  7. concurrency:
  8. group: ui-develop-${{ github.event.number }}
  9. cancel-in-progress: true
  10. permissions:
  11. contents: read
  12. jobs:
  13. test:
  14. runs-on: ubuntu-latest
  15. timeout-minutes: 60
  16. strategy:
  17. fail-fast: false
  18. matrix:
  19. containers: [1, 2, 3]
  20. name: UI Tests (Cypress)
  21. services:
  22. mariadb:
  23. image: mariadb:10.6
  24. env:
  25. MARIADB_ROOT_PASSWORD: travis
  26. ports:
  27. - 3306:3306
  28. options: --health-cmd="mysqladmin ping" --health-interval=5s --health-timeout=2s --health-retries=3
  29. steps:
  30. - name: Clone
  31. uses: actions/checkout@v3
  32. - name: Setup Python
  33. uses: actions/setup-python@v4
  34. with:
  35. python-version: '3.10'
  36. - name: Check for valid Python & Merge Conflicts
  37. run: |
  38. python -m compileall -f "${GITHUB_WORKSPACE}"
  39. if grep -lr --exclude-dir=node_modules "^<<<<<<< " "${GITHUB_WORKSPACE}"
  40. then echo "Found merge conflicts"
  41. exit 1
  42. fi
  43. - name: Check if build should be run
  44. id: check-build
  45. run: |
  46. python "${GITHUB_WORKSPACE}/.github/helper/roulette.py"
  47. env:
  48. TYPE: "ui"
  49. PR_NUMBER: ${{ github.event.number }}
  50. REPO_NAME: ${{ github.repository }}
  51. - uses: actions/setup-node@v3
  52. if: ${{ steps.check-build.outputs.build == 'strawberry' }}
  53. with:
  54. node-version: 14
  55. check-latest: true
  56. - name: Add to Hosts
  57. if: ${{ steps.check-build.outputs.build == 'strawberry' }}
  58. run: |
  59. echo "127.0.0.1 test_site" | sudo tee -a /etc/hosts
  60. echo "127.0.0.1 test_site_producer" | sudo tee -a /etc/hosts
  61. - name: Cache pip
  62. if: ${{ steps.check-build.outputs.build == 'strawberry' }}
  63. uses: actions/cache@v3
  64. with:
  65. path: ~/.cache/pip
  66. key: ${{ runner.os }}-pip-${{ hashFiles('**/*requirements.txt', '**/pyproject.toml', '**/setup.py') }}
  67. restore-keys: |
  68. ${{ runner.os }}-pip-
  69. ${{ runner.os }}-
  70. - name: Cache node modules
  71. if: ${{ steps.check-build.outputs.build == 'strawberry' }}
  72. uses: actions/cache@v3
  73. env:
  74. cache-name: cache-node-modules
  75. with:
  76. path: ~/.npm
  77. key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
  78. restore-keys: |
  79. ${{ runner.os }}-build-${{ env.cache-name }}-
  80. ${{ runner.os }}-build-
  81. ${{ runner.os }}-
  82. - name: Get yarn cache directory path
  83. if: ${{ steps.check-build.outputs.build == 'strawberry' }}
  84. id: yarn-cache-dir-path
  85. run: echo "::set-output name=dir::$(yarn cache dir)"
  86. - uses: actions/cache@v3
  87. if: ${{ steps.check-build.outputs.build == 'strawberry' }}
  88. id: yarn-cache
  89. with:
  90. path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
  91. key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
  92. restore-keys: |
  93. ${{ runner.os }}-yarn-
  94. - name: Cache cypress binary
  95. if: ${{ steps.check-build.outputs.build == 'strawberry' }}
  96. uses: actions/cache@v3
  97. with:
  98. path: ~/.cache
  99. key: ${{ runner.os }}-cypress-
  100. restore-keys: |
  101. ${{ runner.os }}-cypress-
  102. ${{ runner.os }}-
  103. - name: Install Dependencies
  104. if: ${{ steps.check-build.outputs.build == 'strawberry' }}
  105. run: |
  106. bash ${GITHUB_WORKSPACE}/.github/helper/install_dependencies.sh
  107. bash ${GITHUB_WORKSPACE}/.github/helper/install.sh
  108. env:
  109. BEFORE: ${{ env.GITHUB_EVENT_PATH.before }}
  110. AFTER: ${{ env.GITHUB_EVENT_PATH.after }}
  111. TYPE: ui
  112. DB: mariadb
  113. - name: Instrument Source Code
  114. if: ${{ steps.check-build.outputs.build == 'strawberry' }}
  115. run: cd ~/frappe-bench/apps/frappe/ && npx nyc instrument -x 'frappe/public/dist/**' -x 'frappe/public/js/lib/**' -x '**/*.bundle.js' --compact=false --in-place frappe
  116. - name: Build
  117. if: ${{ steps.check-build.outputs.build == 'strawberry' }}
  118. run: cd ~/frappe-bench/ && bench build --apps frappe
  119. - name: Site Setup
  120. if: ${{ steps.check-build.outputs.build == 'strawberry' }}
  121. run: cd ~/frappe-bench/ && bench --site test_site execute frappe.utils.install.complete_setup_wizard
  122. - name: UI Tests
  123. if: ${{ steps.check-build.outputs.build == 'strawberry' }}
  124. run: cd ~/frappe-bench/ && bench --site test_site run-ui-tests frappe --with-coverage --headless --parallel --ci-build-id $GITHUB_RUN_ID-$GITHUB_RUN_ATTEMPT
  125. env:
  126. CYPRESS_RECORD_KEY: 4a48f41c-11b3-425b-aa88-c58048fa69eb
  127. - name: Stop server
  128. if: ${{ steps.check-build.outputs.build-server == 'strawberry' }}
  129. run: |
  130. ps -ef | grep "frappe serve" | awk '{print $2}' | xargs kill -s SIGINT 2> /dev/null || true
  131. sleep 5
  132. - name: Check If Coverage Report Exists
  133. id: check_coverage
  134. uses: andstor/file-existence-action@v1
  135. with:
  136. files: "/home/runner/frappe-bench/apps/frappe/.cypress-coverage/clover.xml"
  137. - name: Upload Coverage Data
  138. if: ${{ steps.check-build.outputs.build == 'strawberry' && steps.check_coverage.outputs.files_exists == 'true' }}
  139. uses: codecov/codecov-action@v3
  140. with:
  141. name: Cypress
  142. fail_ci_if_error: true
  143. directory: /home/runner/frappe-bench/apps/frappe/.cypress-coverage/
  144. verbose: true
  145. flags: ui-tests
  146. - name: Upload Server Coverage Data
  147. if: ${{ steps.check-build.outputs.build-server == 'strawberry' }}
  148. uses: codecov/codecov-action@v3
  149. with:
  150. name: MariaDB
  151. fail_ci_if_error: true
  152. files: /home/runner/frappe-bench/sites/coverage.xml
  153. verbose: true
  154. flags: server
  155. - name: Show bench console if tests failed
  156. if: ${{ failure() }}
  157. run: cat ~/frappe-bench/bench_start.log