|
97 | 97 | "urls": ["{{url}}"], |
98 | 98 | ``` |
99 | 99 |
|
| 100 | +Если указан параметр {{url}}, то можно также игнорировать отдельные URL. |
| 101 | + |
| 102 | +```json |
| 103 | +"ignoreUrls": ["cms"], |
| 104 | +``` |
| 105 | + |
| 106 | +В таком случае, если в процессе деплоя создаётся два стенда: |
| 107 | + |
| 108 | +- `https://test-branch.test.cluster`: основной стенд проекта для ветки `test-branch` |
| 109 | +- `https://test-branch-cms.test.cluster`: стенд с CMS для ветки `test-branch` |
| 110 | + |
| 111 | +То e2e тесты не будут запускаться для стенда с CMS |
| 112 | + |
100 | 113 | ### Запуск при успешном деплое через GA |
101 | 114 |
|
102 | 115 | Только для деплоев при помощи GitHub Actions |
|
147 | 160 |
|
148 | 161 | Тесты не запускаются параллельно — если на момент запуска тестов другой запуск ещё идёт, то запуск попадёт в очередь и будет выполнен, когда первый запуск закончится |
149 | 162 |
|
| 163 | +### Передача переменных окружения через GitHub Secret |
| 164 | + |
| 165 | +#### GitHub Action для ручного запуска тестов |
| 166 | + |
| 167 | +Переменные окружения, доступные во время запуска тестов задаются в блоке `env` в файле `e2e-tools.json` |
| 168 | + |
| 169 | +```json |
| 170 | + "env": { |
| 171 | + "API_URL": { |
| 172 | + "type": "string", |
| 173 | + "default": "https://api.project.csssr.cloud/", |
| 174 | + "description": "Адрес API, к которому обращается стенд" |
| 175 | + }, |
| 176 | + "AUTH_LOGIN": { |
| 177 | + "type": "string", |
| 178 | + "default": "user.autotest", |
| 179 | + "description": "Логин пользователя для обращения напрямую к API" |
| 180 | + }, |
| 181 | + "AUTH_PASSWORD": { |
| 182 | + "type": "string", |
| 183 | + "default": "123456", |
| 184 | + "description": "Пароль пользователя для обращения напрямую к API" |
| 185 | + } |
| 186 | + } |
| 187 | +``` |
| 188 | + |
| 189 | +Если для переменной окружения `type` задан как `string` или `boolean`, в созданном GitHub Action переменные окружения задаются через `inputs` |
| 190 | + |
| 191 | +```yaml |
| 192 | +name: Run CodeceptJS e2e tests |
| 193 | +concurrency: e2e-tests |
| 194 | +on: |
| 195 | + workflow_dispatch: |
| 196 | + inputs: |
| 197 | + launchUrl: |
| 198 | + description: Базовый URL сайта |
| 199 | + default: 'https://master.project.csssr.cloud/' |
| 200 | + required: true |
| 201 | + browserName: |
| 202 | + description: Название браузера как в e2e-tools.json |
| 203 | + default: remote_chrome |
| 204 | + required: true |
| 205 | + ALLURE_JOB_RUN_ID: |
| 206 | + description: Inner parameter for Allure TestOps |
| 207 | + required: false |
| 208 | + API_URL: |
| 209 | + description: 'Адрес API, к которму обращается стенд' |
| 210 | + default: 'https://master.api.mpss.csssr.cloud/' |
| 211 | + required: true |
| 212 | + AUTH_LOGIN: |
| 213 | + description: Логин пользователя для обращения напрямую к API |
| 214 | + default: user.autotest |
| 215 | + required: true |
| 216 | + AUTH_PASSWORD: |
| 217 | + description: Пароль пользователя для обращения напрямую к API |
| 218 | + default: '123456' |
| 219 | + required: true |
| 220 | +``` |
| 221 | +
|
| 222 | +К сожалению GitHub ограничивает максимальное количество параметров, передаваемых через `inputs`. Можно передать не более 10 параметров. |
| 223 | + |
| 224 | +Для обхода этого ограничения можно использовать передачу переменных окружения через GitHub Secrets |
| 225 | + |
| 226 | +В настройках GitHub репозитория необходимо создать секрет, имя которого соответствуют имени переменной окружения |
| 227 | + |
| 228 | + |
| 229 | + |
| 230 | + |
| 231 | +И изменить `type` переменной на `github` |
| 232 | + |
| 233 | +```json |
| 234 | + "env": { |
| 235 | + "API_URL": { |
| 236 | + "type": "string", |
| 237 | + "default": "https://api.project.csssr.cloud/", |
| 238 | + "description": "Адрес API, к которому обращается стенд" |
| 239 | + }, |
| 240 | + "AUTH_LOGIN": { |
| 241 | + "type": "github", |
| 242 | + "default": "user.autotest", |
| 243 | + "description": "Логин пользователя для обращения напрямую к API" |
| 244 | + }, |
| 245 | + "AUTH_PASSWORD": { |
| 246 | + "type": "github", |
| 247 | + "default": "123456", |
| 248 | + "description": "Пароль пользователя для обращения напрямую к API" |
| 249 | + } |
| 250 | + } |
| 251 | +``` |
| 252 | + |
| 253 | +После этого необходимо пересоздать файлы GitHub Actions. |
| 254 | +Теперь переменные окружения в GitHub Actions будут передаваться не через `inputs`, а через секреты GitHub репозитория. |
| 255 | + |
| 256 | +Если секрет в репозитории не задан, то для переменной окружения будет использоваться значение параметра `default` |
| 257 | + |
| 258 | +```yaml |
| 259 | +- run: 'yarn et codecept:run --browser ${{ github.event.inputs.browserName }}' |
| 260 | + working-directory: e2e-tests |
| 261 | + env: |
| 262 | + API_URL: '${{ github.event.inputs.API_URL }}' |
| 263 | + AUTH_LOGIN: "${{ secrets.AUTH_LOGIN || 'user.autotest' }}" |
| 264 | + AUTH_PASSWORD: "${{ secrets.AUTH_PASSWORD || '123456' }}" |
| 265 | +``` |
| 266 | + |
| 267 | +#### GitHub Action для регулярного запуска тестов |
| 268 | + |
| 269 | +Для случая с GitHub Action для регулярного запуска тестов, который создаётся командой `yarn et generate-periodic-runs`, использовать `inputs` нельзя. Все переменные окружения будут передаваться только через секреты репозитория GitHub вне зависимости от указанного `type` в `e2e-tools.json` |
| 270 | + |
150 | 271 | > _Обратите внимание!_ |
151 | 272 | > |
152 | 273 | > Если в файле e2e-tools.json тип браузера “selenium” ("type": "selenium",) [пример](https://github.com/CSSSR/csssr.com/blob/46f58b18d54b7bb7e3733b72b482a5b1c9f18f55/e2e-tests/e2e-tools.json#L26), необходимо исправить имена переменных |
|
155 | 276 | > |
156 | 277 | > ```json |
157 | 278 | > "basicAuth": { |
158 | | -> "credentialsId": "chromedriver", |
| 279 | +> "credentialsId": "chromedriver", |
159 | 280 | > "username_env": "CHROMEDRIVER_USERNAME", |
160 | 281 | > "password_env": "CHROMEDRIVER_PASSWORD" |
161 | 282 | > }, |
|
166 | 287 | > ```json |
167 | 288 | > "seleniumBasicAuth": { |
168 | 289 | > "username_env": "SELENIUM_USERNAME", |
169 | | -> "password_env": "SELENIUM_PASSWORD" |
| 290 | +> "password_env": "SELENIUM_PASSWORD" |
170 | 291 | > }, |
171 | 292 | > ``` |
0 commit comments