docs(emulation): user environment emulation guide (ru) - #139
Conversation
✅ Successfully deployed static |
|
|
||
| Пользовательская среда влияет на то, как приложение выглядит и работает. Один и тот же интерфейс может по-разному вести себя на мобильном экране, при другой локали, в тёмной теме, без доступа к геолокации или при медленном соединении. | ||
|
|
||
| В Testplane эти условия настраиваются несколькими способами: через WebDriver BiDi, обычные WebDriver-команды, CDP и capabilities браузера. Выбор механизма зависит от того, какое свойство среды нужно изменить и в каком браузере выполняется тест. |
There was a problem hiding this comment.
здесь речь идет о 4 способах эмуляции, а ниже таблица уже с тремя способами.
я бы здесь капабилити просто вынес на уровень выше как общий способ задать донастройку браузеру и добавил, что какие-то части эмулации (например, user agent) лучше выносить в настройку браузера, чтобы не применять ее к каждому тесту. Собственно, в текущей документации сейчас вообще ничего про это нет, только упоминание про capabilities
|
|
||
| <Admonition type="caution" title="Сохраняйте функцию отката"> | ||
|
|
||
| `browser.restore()` возвращает user agent, но не viewport, установленный через `emulate("device")`. Для полного отката вызывайте функцию, которую вернул `emulate("device")`. |
There was a problem hiding this comment.
про функцию restoreDevice я бы написал сразу в примере, т.к. сразу не понятно что вообще мы сохранили в переменную. и только в самом конце мы получаем эту информацию
There was a problem hiding this comment.
При этом, у нас внезапно появляется уже второй раз метод restore(), но мы все еще не знаем что он делает в подробностях
|
|
||
| `browser.restore()` возвращает user agent, но не viewport, установленный через `emulate("device")`. Для полного отката вызывайте функцию, которую вернул `emulate("device")`. | ||
|
|
||
| Viewport при этом вернётся к профилю `Desktop Chrome`, а не к исходному размеру. |
There was a problem hiding this comment.
так а делать то что с этим? :)
если мы пишем проблему, то сразу нужно приводить и пример ее решения. Например, заранее сохранить размеры окна, чтобы их потом применить
| }); | ||
| ``` | ||
|
|
||
| Команда применяется к текущему контексту и не возвращает функцию отката. Чтобы восстановить viewport, вызовите `setViewport()` повторно с нужными значениями. |
There was a problem hiding this comment.
здесь не хватает полного примера с сохранением и восстановлением размеров вьюпорта
|
|
||
| ### User agent | ||
|
|
||
| Если клиентский код выбирает мобильный интерфейс по `navigator.userAgent`, задайте значение отдельно: |
|
|
||
| Значение `1` соответствует обычной скорости, `2` замедляет CPU вдвое, `4` — вчетверо. | ||
|
|
||
| Команда поддерживается только в Chromium-браузерах с доступным CDP-подключением. В Firefox она завершается ошибкой до применения ограничений. |
There was a problem hiding this comment.
достаточно только того, что оно работает только с chromium. Думаю, и так понятно, что в остальных браузерах оно не сработает
|
|
||
| Предварительно выдавать разрешение не нужно. | ||
|
|
||
| Чтобы проверить обработку ошибки, передайте объект `Error`: |
There was a problem hiding this comment.
здесь нужно явно указать какую именно ошибку мы хотим проверить
|
|
||
| </Admonition> | ||
|
|
||
| Способ предназначен для Chromium-браузеров, поскольку использует `goog:chromeOptions`. |
There was a problem hiding this comment.
это вообще никак не связано. просто для каждого типа браузеров свое обозначение. Для chromium это goog:chromeOptions, для остальных браузеров она другая. например,
"moz:firefoxOptions": {
prefs: {
"javascript.enabled": false,
},
}
|
|
||
| Повторяющиеся сценарии удобно оформлять как отдельные браузерные профили или вспомогательные функции: например, `mobile`, `dark-theme` и `slow-network`. | ||
|
|
||
| Настройки, специфичные для одного сценария, оставляйте явными в самом тесте. Состояние `emulate()` может перейти в следующий тест даже при `isolation: true`, поэтому восстанавливайте его в том же тесте: |
There was a problem hiding this comment.
Состояние
emulate()может перейти в следующий тест даже приisolation: true
хм... звучит сомнительно. есть примеры?
| Для гарантированно чистой сессии в каждом тесте задайте для браузера: | ||
|
|
||
| ```typescript | ||
| testsPerSession: 1, |
There was a problem hiding this comment.
это очень плохой совет, т.к. на создание новой сессии может уходить много времени
может даже быть кейс, когда создание сессию будет занимать больше времени, чем время самого теста. Поэтому такую настройку нужно использовать только в крайних случаях
Adds a new "Basic guides" article on emulating the user environment in Testplane.
Russian version only; the English page is a stub for now.