You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
|**browser.url()**| Открывает страницу по URL |`browser.url(browser.launch_url)`|
73
-
|**browser.click()**| Нажимает на элемент |`browser.click('[data-testid="Header:authLink"]')`|
74
-
|**browser.waitForElementPresent()**| Проверяет, что элемент находится на странице |`browser.waitForElementPresent('[data-testid="AuthForm:form"]')`|
75
-
|**browser.waitForElementNotPresent()**| Проверяет, что элемент отсутствует на странице |`browser.waitForElementNotPresent('[data-testid="AuthForm:form"]')`|
76
-
|**browser.setValue()**| Вводит значение в поле |`browser.setValue('[data-testid="AuthForm:email"]', '[email protected]')`|
77
-
|**browser.pause()**| Ожидает указанное время в мс |`browser.pause(5000)`|
78
-
|**browser.assert.containsText()**| Проверяет текст внутри элемента с необходимым id |`browser.assert.containsText('[data-testid="PasswordEditForm:informer"]','Пароль успешно изменён')`|
79
-
|**browser.moveToElement()**| Наводит курсор на элемент |`browser.moveToElement('[data-testid="EditForm"]', 1, 1)`|
80
-
|**browser.assert.screenshotElement()**| Сравнивает скриншот объекта с эталонным скриншотом. Как работает: при самом первом запуске делает эталонный скриншот, при последующих сравнивает новый скриншот с эталоном. |`browser.assert.screenshotElement('[data-testid="EditForm"]','форма редактирования')`|
81
-
|**browser.execute(dragAndDrop, ['селектор первого элемента','селектор элемента, куда двигаем'])**| Предоставляет функцию darg-and-drop. Как использовать: выполнить в терминале (достаточно один раз) `yarn add --dev html-dnd` и в начале теста объявить `var dragAndDrop = require('html-dnd').codeForSelectors`. После этого можно пользоваться командой |
82
-
|**.assert.screenshotElement()**| Скрывает элементы страницы на скриншоте |`.assert.screenshotElement('[data-test-id="Card:root"]','вид карточки талант отказался',{ hideSelectors: ['[data-test-id="CardResponse:date"]'] })`|
83
-
84
-
### Полезное
85
-
86
-
- Браузер стартует в начале каждого тест-кейса и закрывается после его выполнения.
87
-
- Изменить время ожидания по умолчанию можно в файле `/e2e-test/e2e-tools` в строке `"waitForConditionTimeout": 10000`.
88
-
- После тестового прогона результат запуска сохраняется в отчет (адрес отчета доступен в конце лога запуска).
|`Error while running .clickElement() protocol action: An unknown error has occurred`| Возникает при попытке кликнуть на элемент, который есть на странице, но вне видимой части |
95
-
|`Error while running "screenshotElement" command: Error: Unsupported image type`| Возникает при попытке сделать скриншот элемента, которого нет на странице, или если эталонный скриншот не удалось считать |
23
+
> Обратите внимание, что все команды, касающиеся тестов, необходимо выполнять, находясь в папке e2e-tests.
"commands": ["yarn et nightwatch:run --browser remote_chrome"]
131
-
}
132
-
],
133
-
```
134
-
135
-
Пример по [ссылке](https://github.com/CSSSR/s7/blob/aa47f1f94a3d9d5e2b7ad4441fd75a3fed1692e5/e2e-tests/e2e-tools.json#L3-L15).
136
-
137
-
### Подробности
138
-
139
-
Если указать `"slackChannel": "<channel-id>"`, то результат прогона будет отправляться в слак. ID канала можно найти в его настройках ([видеоинструкция](https://s.csssr.ru/U09LGPMEU/20210709142250.mp4)).
140
-
141
-
#### 1. Запуск по расписанию.
142
-
143
-
Время запуска определяется строкой в формате CRON: `0 9 * * *`. Кастомизировать её удобно при помощи сайта [crontab.guru](https://crontab.guru/#0_9_*_*_*).
144
-
145
-
```json
146
-
"event": {
147
-
"schedule": [{ "cron": "0 9 * * *" }]
148
-
}
149
-
```
150
-
151
-
#### 2. Запуск при успешном деплое.
152
-
153
-
Такой запуск работает только для тестовых стендов и только для деплоев при помощи [куберты](https://kuberta.csssr.cloud)
154
-
155
-
```json
156
-
"customEvent": "successful-deploy",
157
-
```
158
-
159
-
_Можно запускать тесты на всех созданных стендах, если указать параметр {{url}}. В качестве URL будет использоваться URL стенда._
160
-
161
-
```json
162
-
"urls": ["{{url}}"],
163
-
```
164
-
165
-
#### 3. Запуск при успешном деплое.
166
-
167
-
Только для деплоев при помощи GitHub Actions
168
-
169
-
```json
170
-
"event": {
171
-
"workflow_run": {
172
-
"workflows": ["Deploy Workflow Name"],
173
-
"types": ["completed"],
174
-
"branches": ["master"]
175
-
}
176
-
}
177
-
```
178
-
179
-
По-умолчанию периодические запуски используют тесты, которые расположены в `default` ветке репозитория. Исключением является ручной запуск Github Action, когда можно задать ветку в `Run workflow`.
180
-
181
-
Для того, чтобы изменить ветку репозитория, тесты из которой будут использоваться, необходимо задать опцию `testsBranch`.
182
-
183
-
Использование тестов из ветки самого стенда доступно для события `"customEvent": "successful-deploy"`, необходимо указать `{{branch}}`.
"yarn et nightwatch:run --browser remote_firefox",
203
-
],
204
-
"testsBranch": "test"
205
-
}
206
-
],
207
-
```
208
-
209
-
В таком случае при автоматическом запуске будут использоваться тесты из ветки,указанной в конфигурационном файле. При ручном запуске будут использоваться тесты из ветки, которая была указана в `Run workflow`.
210
-
211
-
Каждый URL, указанный в `urls` и каждая команда, указанная в `commands`, создаёт отдельный файл, который можно запустить независимо.
212
-
213
-
Тесты не запускаются параллельно — если на момент запуска тестов другой запуск ещё идёт, то запуск попадёт в очередь и будет выполнен, когда первый запуск закончится
214
-
215
-
> _Обратите внимание!_
216
-
> Если в файле e2e-tools.json тип браузера “selenium” ("type": "selenium",) [пример](https://github.com/CSSSR/csssr.com/blob/46f58b18d54b7bb7e3733b72b482a5b1c9f18f55/e2e-tests/e2e-tools.json#L26), необходимо исправить имена переменных
217
-
>
218
-
> БЫЛО:
219
-
>
220
-
> ```json
221
-
> "basicAuth": {
222
-
> "credentialsId": "chromedriver",
223
-
> "username_env": "CHROMEDRIVER_USERNAME",
224
-
> "password_env": "CHROMEDRIVER_PASSWORD"
225
-
> },
226
-
> ```
227
-
>
228
-
> НЕОБХОДИМО ИСПРАВИТЬ НА:
229
-
>
230
-
> ```json
231
-
> "seleniumBasicAuth": {
232
-
> "username_env": "SELENIUM_USERNAME",
233
-
> "password_env": "SELENIUM_PASSWORD"
234
-
> },
235
-
> ```
236
-
237
-
## ШАГ 3. Запустить любой тест на удаленном сервере
238
-
239
-
При первом прогоне будет запрос username и password, которые сразу запишутся в .env
240
-
241
-
## ШАГ 4. Перегенерировать файлы
242
-
243
-
Перегенерировать файлы командой `yarn et generate-periodic-runs`
0 commit comments