25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.
 
 
 
 
 
 

178 satır
5.7 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. mysql:
  23. image: mariadb:10.3
  24. env:
  25. MYSQL_ALLOW_EMPTY_PASSWORD: YES
  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.9'
  36. - name: Check if build should be run
  37. id: check-build
  38. run: |
  39. python "${GITHUB_WORKSPACE}/.github/helper/roulette.py"
  40. env:
  41. TYPE: "ui"
  42. PR_NUMBER: ${{ github.event.number }}
  43. REPO_NAME: ${{ github.repository }}
  44. - uses: actions/setup-node@v3
  45. if: ${{ steps.check-build.outputs.build == 'strawberry' }}
  46. with:
  47. node-version: 14
  48. check-latest: true
  49. - name: Add to Hosts
  50. if: ${{ steps.check-build.outputs.build == 'strawberry' }}
  51. run: |
  52. echo "127.0.0.1 test_site" | sudo tee -a /etc/hosts
  53. echo "127.0.0.1 test_site_producer" | sudo tee -a /etc/hosts
  54. - name: Cache pip
  55. if: ${{ steps.check-build.outputs.build == 'strawberry' }}
  56. uses: actions/cache@v3
  57. with:
  58. path: ~/.cache/pip
  59. key: ${{ runner.os }}-pip-${{ hashFiles('**/*requirements.txt', '**/pyproject.toml', '**/setup.py') }}
  60. restore-keys: |
  61. ${{ runner.os }}-pip-
  62. ${{ runner.os }}-
  63. - name: Cache node modules
  64. if: ${{ steps.check-build.outputs.build == 'strawberry' }}
  65. uses: actions/cache@v3
  66. env:
  67. cache-name: cache-node-modules
  68. with:
  69. path: ~/.npm
  70. key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
  71. restore-keys: |
  72. ${{ runner.os }}-build-${{ env.cache-name }}-
  73. ${{ runner.os }}-build-
  74. ${{ runner.os }}-
  75. - name: Get yarn cache directory path
  76. if: ${{ steps.check-build.outputs.build == 'strawberry' }}
  77. id: yarn-cache-dir-path
  78. run: echo "::set-output name=dir::$(yarn cache dir)"
  79. - uses: actions/cache@v3
  80. if: ${{ steps.check-build.outputs.build == 'strawberry' }}
  81. id: yarn-cache
  82. with:
  83. path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
  84. key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
  85. restore-keys: |
  86. ${{ runner.os }}-yarn-
  87. - name: Cache cypress binary
  88. if: ${{ steps.check-build.outputs.build == 'strawberry' }}
  89. uses: actions/cache@v3
  90. with:
  91. path: ~/.cache
  92. key: ${{ runner.os }}-cypress-
  93. restore-keys: |
  94. ${{ runner.os }}-cypress-
  95. ${{ runner.os }}-
  96. - name: Install Dependencies
  97. if: ${{ steps.check-build.outputs.build == 'strawberry' }}
  98. run: bash ${GITHUB_WORKSPACE}/.github/helper/install_dependencies.sh
  99. env:
  100. BEFORE: ${{ env.GITHUB_EVENT_PATH.before }}
  101. AFTER: ${{ env.GITHUB_EVENT_PATH.after }}
  102. TYPE: ui
  103. - name: Install
  104. if: ${{ steps.check-build.outputs.build == 'strawberry' }}
  105. run: bash ${GITHUB_WORKSPACE}/.github/helper/install.sh
  106. env:
  107. DB: mariadb
  108. TYPE: ui
  109. - name: Instrument Source Code
  110. if: ${{ steps.check-build.outputs.build == 'strawberry' }}
  111. 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
  112. - name: Build
  113. if: ${{ steps.check-build.outputs.build == 'strawberry' }}
  114. run: cd ~/frappe-bench/ && bench build --apps frappe
  115. - name: Site Setup
  116. if: ${{ steps.check-build.outputs.build == 'strawberry' }}
  117. run: cd ~/frappe-bench/ && bench --site test_site execute frappe.utils.install.complete_setup_wizard
  118. - name: UI Tests
  119. if: ${{ steps.check-build.outputs.build == 'strawberry' }}
  120. 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
  121. env:
  122. CYPRESS_RECORD_KEY: 4a48f41c-11b3-425b-aa88-c58048fa69eb
  123. - name: Stop server
  124. if: ${{ steps.check-build.outputs.build-server == 'strawberry' }}
  125. run: |
  126. ps -ef | grep "frappe serve" | awk '{print $2}' | xargs kill -s SIGINT 2> /dev/null || true
  127. sleep 5
  128. - name: Check If Coverage Report Exists
  129. id: check_coverage
  130. uses: andstor/file-existence-action@v1
  131. with:
  132. files: "/home/runner/frappe-bench/apps/frappe/.cypress-coverage/clover.xml"
  133. - name: Upload Coverage Data
  134. if: ${{ steps.check-build.outputs.build == 'strawberry' && steps.check_coverage.outputs.files_exists == 'true' }}
  135. uses: codecov/codecov-action@v3
  136. with:
  137. name: Cypress
  138. fail_ci_if_error: true
  139. directory: /home/runner/frappe-bench/apps/frappe/.cypress-coverage/
  140. verbose: true
  141. flags: ui-tests
  142. - name: Upload Server Coverage Data
  143. if: ${{ steps.check-build.outputs.build-server == 'strawberry' }}
  144. uses: codecov/codecov-action@v3
  145. with:
  146. name: MariaDB
  147. fail_ci_if_error: true
  148. files: /home/runner/frappe-bench/sites/coverage.xml
  149. verbose: true
  150. flags: server