diff --git a/docs/_partials/specs/assert-view-options.mdx b/docs/_partials/specs/assert-view-options.mdx index f309570..edae423 100644 --- a/docs/_partials/specs/assert-view-options.mdx +++ b/docs/_partials/specs/assert-view-options.mdx @@ -1,95 +1,95 @@ - - - + + + - + - + - + - + diff --git a/docs/command-line/index.mdx b/docs/command-line/index.mdx index c18c27f..88bc796 100644 --- a/docs/command-line/index.mdx +++ b/docs/command-line/index.mdx @@ -2,75 +2,75 @@ import Admonition from "@theme/Admonition"; # CLI {#cli} -Testplane позволяет устанавливать параметры через CLI. +Testplane allows setting options via command line interface. -## Обзор {#overview} +## Overview {#overview} -Доступные опции: +Available options: ``` --V, --version вывести версию инструмента --c, --config путь к конфигурационному файлу --b, --browser запустить тесты только в указанном браузере --s, --set запустить тесты только в указанном наборе --r, --require добавить модуль ---reporter установить репортер ---grep запустить только тесты, соответствующие шаблону ---update-refs обновить эталоны скриншотов или создать их, если они не существуют (используеося командой "assertView") ---inspect [inspect] запустить node.js инспектор ---inspect-brk [inspect-brk] запустить nodejs инспектор с точкой останова в начале ---repl [type] запустить repl режим, позволяя вызвать `browser.switchToRepl` в коде теста для открытия repl интерфейса (по умолчанию: false) ---repl-before-test [type] запустить repl режим перед запуском теста (по умолчанию: false) ---repl-on-fail [type] запустить repl режим только в случае падения теста (по умолчанию: false) ---devtools запустить тесты используя протокол автоматизации Chrome Devtools Protocol --h, --help вывести информацию об использовании +-V, --version output the version number +-c, --config path to configuration file +-b, --browser run tests only in specified browser +-s, --set run tests only in the specified set +-r, --require require module +--reporter test reporters +--grep run only tests matching the pattern +--update-refs update screenshot references or gather them if they do not exist ("assertView" command) +--inspect [inspect] nodejs inspector on [=[host:]port] +--inspect-brk [inspect-brk] nodejs inspector with break at the start +--repl [type] run one test, call `browser.switchToRepl` in test code to open repl interface (default: false) +--repl-before-test [type] open repl interface before test run (default: false) +--repl-on-fail [type] open repl interface on test fail only (default: false) +--devtools switches the browser to the devtools mode with using CDP protocol +-h, --help output usage information ``` -## Переопределение настроек {#overriding-settings} +## Overriding settings {#overriding-settings} -Все параметры можно переопределить с помощью флагов командной строки или переменных среды согласно следующим приоритетам (в порядке убывания): +All options can be overridden via command-line flags or environment variables with the following priorities, by descending: -- Опция командной строки; +- A command-line option; -- Переменная окружения; +- An environment variable; -- Значение в файле конфигурации; +- A config file value; -- Значение по умолчанию. +- The default value. -### Переопределение с помощью опции CLI {#overriding-cli-settings} +### Overriding with CLI option {#overriding-cli-settings} -Чтобы переопределить параметр конфигурации с помощью опции CLI, преобразуйте полный путь опции в `--kebab-case`. +To override a config setting with a CLI option, convert the full option path to `--kebab-case`. -Например, чтобы переопределить свойство `baseUrl` в конфигурации: +For example, to override config's `baseUrl` property: ```bash testplane path/to/mytest.js --base-url http://example.com ``` -Это также работает для вложенных свойств. Пример переопределения значения `browsers.firefox.sessionsPerBrowser` (предполагается, что Вы описали браузер с идентификатором "firefox"): +It also works for nested properties. Example of overriding `browsers.firefox.sessionsPerBrowser` value (assuming you have defined browser with id "firefox"): ```bash testplane path/to/mytest.js --browsers-firefox-sessions-per-browser 7 ``` -### Переопределение с помощью переменной окружения {#overriding-env-settings} +### Overriding with environment variable {#overriding-env-settings} -Чтобы переопределить настройку с помощью переменной окружения, переведите ее полный путь в `snake_case` и добавьте префикс `testplane_`. +To override a setting with an environment variable, convert its full path to `snake_case` and add the `testplane_` prefix. -Примеры переопределения тех же значений `baseUrl` и `browsers.firefox.sessionsPerBrowser` с использованием переменных среды вместо опций CLI: +Examples of overriding the same `baseUrl` and `browsers.firefox.sessionsPerBrowser` values using environment variables instead of CLI options: ```bash testplane_base_url=http://example.com testplane path/to/mytest.js testplane_browsers_firefox_sessions_per_browser=7 testplane path/to/mytest.js ``` -Помимо переопределения значений конфигурации, также существуют две дополнительные переменные среды: "TESTPLANE_SKIP_BROWSERS" и "TESTPLANE_SETS": +Besides overriding config values, there also two extra environment variables: "TESTPLANE_SKIP_BROWSERS" and "TESTPLANE_SETS": #### TESTPLANE_SKIP_BROWSERS -Пропустить браузеры, указанные в конфигурации, по их идентификатору. Несколько идентификаторов браузеров должны быть разделены запятой -(допускаются пробелы после запятых). +Skip the browsers specified in the config by passing the browser IDs. Multiple browser IDs should be separated by commas +(spaces after commas are allowed). ```bash TESTPLANE_SKIP_BROWSERS=ie10,ie11 testplane @@ -78,7 +78,7 @@ TESTPLANE_SKIP_BROWSERS=ie10,ie11 testplane #### TESTPLANE_SETS -Запускает только указанные наборы (альтернатива опции CLI `--set`). +Runs only specified sets (CLI option `--set` alternative). ```bash TESTPLANE_SETS=desktop,touch testplane @@ -86,7 +86,7 @@ TESTPLANE_SETS=desktop,touch testplane ## Version {#version} -Вывести текущую версию `testplane`. +Print current `testplane` version. ```bash testplane --version @@ -94,7 +94,7 @@ testplane --version ## Config {#config} -Использовать заданный файл конфигурации. +Use custom configuration file. ```bash testplane --config ./local.testplane.config.ts @@ -102,7 +102,7 @@ testplane --config ./local.testplane.config.ts ## Browser {#browser} -Запустить тесты только в указанном браузере. +Run tests only in specified browser. ```bash testplane --browser chrome @@ -110,7 +110,7 @@ testplane --browser chrome ## Set {#set} -Запустить тесты только в указанном наборе. +Run tests only in the specified set. ```bash testplane --set desktop @@ -118,7 +118,7 @@ testplane --set desktop ## Require {#require} -Загрузить внешние модули, которые локально у вас на машине, перед запуском `testplane`. Это полезно для загрузчиков, таких как ECMAScript модули через [esm](https://www.npmjs.com/package/esm). +Load external modules, locally existing in your machine, before running `testplane`. This is useful for loaders, such as ECMAScript modules via [esm](https://www.npmjs.com/package/esm). ```bash testplane --require ./tsconfig-register-paths.js @@ -126,35 +126,35 @@ testplane --require ./tsconfig-register-paths.js ## Reporter {#reporter} -Может использоваться для установки одного из следующих терминальных отчетов: +Can be used to set one of the following reporters: -- `flat` - вся информация об ошибках и повторных тестах будет сгруппирована по браузерам в конце отчета; -- `plain` - информация об ошибках и повторах будет размещена после каждого теста; -- `jsonl` - выводит подробную информацию о каждом результате теста в форме [jsonl](https://jsonlines.org/). +- `flat` - all information about failed and retried tests would be grouped by browsers at the end of the report; +- `plain` - information about fails and retries would be placed after each test; +- `jsonl` - displays detailed information about each test result in [jsonl](https://jsonlines.org/) form. -По умолчанию - `flat`. +Default is `flat`. -По умолчанию информация о результатах тестов выводится в командную строку, но есть возможность перенаправить вывод в файл: +Information about test results is displayed to the command line by default. But there is an ability to redirect the output to a file: ```bash testplane --reporter '{"type": "jsonl", "path": "./some-path/result.jsonl"}' ``` -Вы также можете создавать несколько отчетов: +You can also specify multiple reporters: ```bash testplane --reporter '{"type": "jsonl", "path": "./some-path/result.jsonl"}' --reporter flat ``` -Помимо этих отчетов для терминала, вы можете использовать плагин [html-reporter][html-reporter] для создания html-отчетов. +Aside these terminal reporters, you can use [html-reporter][html-reporter] plugin in order to generate html reports. ## Grep {#grep} -Запусть только те тесты, полное название которых соответствует шаблону. +Run only tests, which full name matches the pattern. -### Пример {#grep-example} +### Example {#grep-example} -Если у вас есть некоторые тесты: +If you have some tests: ```ts describe("test", () => { @@ -169,7 +169,7 @@ describe("test", () => { }); ``` -То вы можете запустить тесты внутри набора "nested path" без запуска тестов внутри набора "other path" с помощью любого из этих вариантов: +You can run tests inside "nested path" suite without running tests inside "other path" suite with any of these variants: ```bash testplane --grep "nested path" @@ -179,32 +179,32 @@ testplane --grep "test with nested path" ### Update refs {#update-refs} -Запустить тесты, обновив все ссылки на снимки экрана, созданные командой [assertView][assert-view]. +Run tests, updating all screenshot references, created by [assertView][assert-view] command. ```bash testplane --update-refs ``` - Рекомендуемый способ обновления эталонов - использование плагина [html-reporter][html-reporter]. + Recommended way to update screenshots is using [html-reporter][html-reporter] plugin. ## Inspect {#inspect} -Запускает тесты Testplane с использованием [nodejs дебаггера](https://nodejs.org/en/docs/inspector). +Runs Testplane tests using [nodejs inspector](https://nodejs.org/en/docs/inspector). ```bash testplane --inspect ``` - В отладочном режиме запускается только один рабочий процесс, и все тесты выполняются только в - нем. Используйте этот режим с опцией `sessionsPerBrowser=1`, чтобы отлаживать тесты по одному. + In the debugging mode, only one worker is started and all tests are performed only in it. Use + this mode with option `sessionsPerBrowser=1` in order to debug tests one at a time. ## Inspect break {#inspect-brk} -То же самое, что и [Inspect](#inspect), но с точкой останова в начале. +The same as [Inspect](#inspect), but with breakpoint at the start. ```bash testplane --inspect-brk @@ -212,34 +212,34 @@ testplane --inspect-brk ## REPL {#repl} -Включает [REPL](https://ru.wikipedia.org/wiki/REPL). Также отключает таймаут продолжительности теста. Может быть включен с помощью указания следующих CLI опций: +Enables a [REPL](https://en.wikipedia.org/wiki/Read–eval–print_loop). It also disables test duration timeout. Can be used by specifying following CLI options: -- `--repl` - в этом режиме должен быть запущен только один тест в одном браузере, в противном случае выбрасывается ошибка. REPL интерфейс не запускается автоматически, поэтому вам нужно вызвать команду [switchToRepl][switch-to-repl] в коде теста; -- `--repl-before-test` - то же, что и опция `--repl`, за исключением того, что REPL интерфейс открывается автоматически перед запуском теста; -- `--repl-on-fail` - то же, что и опция `--repl`, за исключением того, что REPL интерфейс открывается автоматически при ошибке во время выполнения теста. +- `--repl` - in this mode, only one test in one browser should be run, otherwise an error is thrown. REPL interface does not start automatically, so you need to call [switchToRepl][switch-to-repl] command in the test code; +- `--repl-before-test` - the same as `--repl` option except that REPL interface opens automatically before run test; +- `--repl-on-fail` - the same as `--repl` option except that REPL interface opens automatically on test fail. ```bash testplane --repl --grep 'my test name' --browser chrome ``` - Больше информации о режиме REPL можно найти в документации команды - [switchToRepl][switch-to-repl]. + More information about Testplane REPL mode can be found in [switchToRepl][switch-to-repl] + command documentation. ## Devtools {#devtools} -Запускает тесты Testplane с использованием [протокола автоматизации devtools][webdriver-vs-cdp]. +Runs Testplane tests using [devtools automation protocol][webdriver-vs-cdp]. ```bash testplane --devtools ``` -## Помощь {#help} +## Help {#help} -Выводит информацию об опциях и командах. Плагины Testplane могут добавлять свои собственные команды и опции. +Prints out information about options and commands. Testplane Plugins can add their own commands and options. -Например, [html-reporter][html-reporter] добавляет команду `gui`. +For example, [html-reporter][html-reporter] adds `gui` command. ```bash testplane --help diff --git a/docs/commands/browser/$$.mdx b/docs/commands/browser/$$.mdx index 8e26864..2b71523 100644 --- a/docs/commands/browser/$$.mdx +++ b/docs/commands/browser/$$.mdx @@ -7,38 +7,38 @@ import Admonition from "@theme/Admonition"; # $$ -## Обзор {#overview} +## Overview {#overview} -Используйте команду `$$` вместо [findElements][find-elements] как более краткую команду, чтобы получить несколько элементов на странице. +Use the `$$` command instead of [findElements][find-elements] as a shorter command to get multiple elements on the page. -Команда `$$` возвращает массив с искомыми элементами, на каждом из которых можно вызывать команды действия без передачи селектора. Однако, если вы все же передадите селектор, то сначала будет найден соответствующий элемент, а затем вызвано действие для этого элемента. +The `$$` command returns an array with the desired elements, on each of which you can call action commands without passing the selector. However, if you do pass a selector, it will first find the corresponding element and then call the action for that element. -Вы можете связать `$` или `$$` вместе, чтобы спуститься по дереву DOM. +You can chain `$` or `$$` together to traverse down the DOM tree. - Подробнее о том, как выбрать определенные элементы, смотрите в рецепте «[Как использовать - селекторы][how-to-use-selectors]». + Read more about how to select specific elements in the recipe "[How to use + selectors][how-to-use-selectors]". -## Использование {#usage} +## Usage {#usage} ```javascript await browser.$$(selector); ``` -## Параметры команды {#parameters} +## Command Parameters {#parameters}
**Опция****Тип****Описание****Option****Type****Description**
ignoreElementsArray или StringArray or String - Элементы (задаются как селекторы), которые будут проигнорированы при сравнении - скриншотов. Игнор реализуется с помощью закраски перечисленных элементов черным - цветом. В случае одного элемента параметр можно задавать как строку. + Elements (specified as selectors) that will be ignored when comparing screenshots. + Ignoring is implemented by painting the listed elements black. In the case of a + single element, the parameter can be specified as a string.
tolerance NumberЧувствительность к разнице в цветам.Sensitivity to color differences.
antialiasingTolerance NumberЧувствительность в антиалиасинге.Sensitivity to antialiasing.
allowViewportOverflow Boolean - По умолчанию Testplane выдает ошибку, если элемент находится за пределами границ - вьюпорта. Этот параметр отключает проверку на границы, позволяя снимать скриншоты - элементов, не влезающих во вьюпорт. При этом на скриншоте будут видны только те - части элемента, которые влезли во вьюпорт. Однако если _compositeImage_ равен - _true_, то части элемента, которые оказались за _нижней_ границей вьюпорта, тоже - будут видны на скриншоте. Аналогично если _captureElementFromTop_ равен _true_, то - на скриншот попадут и те части элемента, которые оказались за пределами _верхней_ - границы вьюпорта. + By default, Testplane throws an error if an element is outside the viewport + boundaries. This parameter disables boundary checking, allowing screenshots of + elements that do not fit within the viewport. Only the parts of the element that fit + within the viewport will be visible in the screenshot. However, if _compositeImage_ + is set to _true_, parts of the element that are below the viewport will also be + visible in the screenshot. Similarly, if _captureElementFromTop_ is set to _true_, + parts of the element that are above the viewport will also be included in the + screenshot.
captureElementFromTop Boolean - Снимать скриншот элемента с самого верха. Если элемент находится за пределами - вьюпорта, то к нему будет выполнен подскролл. + Capture a screenshot of the element from the very top. If the element is outside the + viewport, it will be scrolled into view.
compositeImage Boolean - Если элемент не влазит во вьюпорт, то при включении этой опции поочередно будет - сделано несколько скриншотов разных частей элемента, после чего скриншоты будут - склеены в один, чтобы отобразить элемент полностью. + If the element does not fit within the viewport, enabling this option will take + multiple screenshots of different parts of the element sequentially, and then stitch + them together into one image to display the entire element.
screenshotDelay Number - Задержка в миллисекундах перед снятием скриншота. Может пригодиться, когда на - странице есть элементы, использующие анимацию, или скроллбар, который исчезает не - сразу и попадает на результирующий скриншот. + Delay in milliseconds before taking a screenshot. This can be useful when there are + elements on the page that use animation, or a scrollbar that does not disappear + immediately and ends up in the resulting screenshot.
selectorToScroll String - Селектор, который нужно скроллировать. Может пригодиться, когда надо сделать - скриншот модального окна, которое не помещается на экране. Иначе без указания - селектора скролл будет применяться к объекту _window_, и скроллироваться будет - задний фон, оставляя попап-окно на месте. + Selector to scroll. This can be useful when you need to take a screenshot of a modal + window that does not fit on the screen. Otherwise, without specifying the selector, + the scroll will be applied to the _window_ object, and the background will scroll, + leaving the popup window in place.
disableAnimation Boolean - Отключение анимаций и переходов при снятии скриншота. По умолчанию `true` начиная с - версии `8.0.0` + Disable animations and transitions when taking a screenshot. Default is `true` + starting from version `8.0.0`.
ignoreDiffPixelCount`` `${number}%` `` или Number`` `${number}%` `` or Number - Процент пикселей, которые нужно игнорировать при диффе. Удобно для игнорирования - очень маленьких диффов. По умолчанию `0`. Доступен начиная с версии `8.2.0` + Percentage of pixels to ignore in the diff. Useful for ignoring very small diffs. + Default is `0`. Available starting from version `8.2.0`.
- + - +
**Имя****Тип****Описание**
**Name****Type****Description**
selectorString или FunctionСелектор или JS-функция для получения множества элементов.
selectorString or FunctionSelector or JS function to get multiple elements.
-## Примеры использования {#examples} +## Examples {#examples} **index.html** @@ -62,31 +62,35 @@ await browser.$$(selector); **$.js** ```javascript -it("should get text a menu link", async ({ browser }) => { +it("should get text of a menu link", async ({ browser }) => { const text = await browser.$$("#menu")[0]; - console.log(await text.$$("li")[2].$("a").getText()); // выведет: "API" + console.log(await text.$$("li")[2].$("a").getText()); // outputs: "API" }); -it("should get text a menu link - JS Function", async ({ browser }) => { +it("should get text of a menu link - JS Function", async ({ browser }) => { const text = await browser.$$(function () { - // Использовать здесь стрелочную функцию нельзя. - // Это Window – https://developer.mozilla.org/en-US/docs/Web/API/Window + // Arrow function cannot be used here. + // This is Window – https://developer.mozilla.org/en-US/docs/Web/API/Window // - // TypeScript-пользователи могут сделать что-нибудь вроде: + // TypeScript users can do something like: // return (this as Window).document.querySelectorAll('#menu') return this.document.querySelectorAll("#menu"); // Element[] })[0]; - console.log(await text.$$("li")[2].$("a").getText()); // выведет: "API" + console.log(await text.$$("li")[2].$("a").getText()); // outputs: "API" }); ``` -## Связанные команды {#related} +## Related Commands {#related} - [browser.$](../_dollar) - [element.$](../../element/_dollar) - [element.$$](../../element/_dollardollar) +## References + +We'd like to give credit to the original WebdriverIO docs [article](https://webdriver.io/docs/api/browser/$$), from which we drew some information while writing our version. + [find-elements]: https://webdriver.io/docs/api/webdriver/#findelements [how-to-use-selectors]: https://webdriver.io/docs/selectors diff --git a/docs/commands/browser/$.mdx b/docs/commands/browser/$.mdx index f676d3c..fd66cf6 100644 --- a/docs/commands/browser/$.mdx +++ b/docs/commands/browser/$.mdx @@ -7,38 +7,38 @@ import Admonition from "@theme/Admonition"; # $ -## Обзор {#overview} +## Overview {#overview} -Используйте команду `$` вместо [findElement][find-element] как более краткую команду, чтобы получить один элемент на странице. +Use the `$` command instead of [findElement][find-element] as a shorter command to get a single element on the page. -Команда `$` возвращает объект, описывающий элемент, на котором можно вызывать команды действия без передачи селектора. Однако, если вы все же передадите селектор, то сначала будет найден соответствующий элемент, а затем вызвано действие для этого элемента. Вы также можете передать объект в качестве селектора, где объект содержит свойство `element-6066-11e4-a52e-4f735466cecf` со значением ссылки на элемент. Затем команда преобразует ссылку в расширенный элемент WebdriverIO. +The `$` command returns an object describing the element, on which you can call action commands without passing the selector. However, if you pass a selector, it will first find the corresponding element and then call the action for that element. You can also pass an object as the selector, where the object contains the property `element-6066-11e4-a52e-4f735466cecf` with the value of the element reference. The command will then convert the reference into an extended WebdriverIO element. -Вы можете связать `$` или `$$` вместе, чтобы спуститься по дереву DOM. +You can chain `$` or `$$` together to traverse down the DOM tree. - Подробнее о том, как выбрать определенные элементы, читайте в рецепте «[Как использовать - селекторы][how-to-use-selectors]». + Read more about how to select specific elements in the recipe "[How to use + selectors][how-to-use-selectors]". -## Использование {#usage} +## Usage {#usage} ```javascript await browser.$(selector); ``` -## Параметры команды {#parameters} +## Command Parameters {#parameters} - + - +
**Имя****Тип****Описание**
**Name****Type****Description**
selectorString или Function или MatcherСелектор или JS-функция для получения конкретного элемента.
selectorString or Function or MatcherSelector or JS function to get a specific element.
-## Примеры использования {#examples} +## Examples {#examples} **index.html** @@ -62,31 +62,31 @@ await browser.$(selector); **$.js** ```javascript -it("should get text a menu link", async ({ browser }) => { +it("should get text of a menu link", async ({ browser }) => { const text = await browser.$("#menu"); - console.log(await text.$$("li")[2].$("a").getText()); // выведет: "API" + console.log(await text.$$("li")[2].$("a").getText()); // outputs: "API" }); -it("should get text a menu link - JS Function", async ({ browser }) => { +it("should get text of a menu link - JS Function", async ({ browser }) => { const text = await browser.$(function () { - // Использовать здесь стрелочную функцию нельзя. - // Это Window – https://developer.mozilla.org/en-US/docs/Web/API/Window + // Arrow function cannot be used here. + // This is Window – https://developer.mozilla.org/en-US/docs/Web/API/Window // - // TypeScript-пользователи могут сделать что-нибудь вроде: + // TypeScript users can do something like: // return (this as Window).document.querySelector('#menu') return this.document.querySelector("#menu"); // Element }); - console.log(await text.$$("li")[2].$("a").getText()); // выведет: "API" + console.log(await text.$$("li")[2].$("a").getText()); // outputs: "API" }); -it("should allow to convert protocol result of an element into a WebdriverIO element", async ({ +it("should allow converting the protocol result of an element into a WebdriverIO element", async ({ browser, }) => { const activeElement = await browser.getActiveElement(); - console.log(await browser.$(activeElement).getTagName()); // выведет активный элемент + console.log(await browser.$(activeElement).getTagName()); // outputs the active element }); it("should use Androids DataMatcher or ViewMatcher selector", async ({ browser }) => { @@ -105,11 +105,15 @@ it("should use Androids DataMatcher or ViewMatcher selector", async ({ browser } }); ``` -## Связанные команды {#related} +## Related Commands {#related} - [browser.$$](../_dollardollar) - [element.$](../../element/_dollar) - [element.$$](../../element/_dollardollar) +## References + +We'd like to give credit to the original WebdriverIO docs [article](https://webdriver.io/docs/api/browser/$), from which we drew some information while writing our version. + [find-element]: https://webdriver.io/docs/api/webdriver/#findelement [how-to-use-selectors]: https://webdriver.io/docs/selectors diff --git a/docs/commands/browser/action.mdx b/docs/commands/browser/action.mdx index 5fa6dbf..b30745d 100644 --- a/docs/commands/browser/action.mdx +++ b/docs/commands/browser/action.mdx @@ -2,46 +2,46 @@ import Admonition from "@theme/Admonition"; # action -## Обзор {#overview} +## Overview {#overview} -Используйте команду `action`, чтобы выполнить действия ввода в одном из виртуализируемых устройств в веб-браузере. +Use the `action` command to perform input actions on one of the virtualizable devices in the web browser. -В отличие от высокоуровневых команд [scrollIntoView][scrollIntoView] и [doubleClick][doubleClick], Actions API обеспечивает более гранулярное управление устройствами ввода. Доступны следующие источники ввода: +Unlike high-level commands like [scrollIntoView][scrollIntoView] and [doubleClick][doubleClick], the Actions API provides more granular control of input devices. The following input sources are available: -- ввод текста с клавиатуры для клавиатурных устройств; -- управление мышью, пером или сенсорным устройством; -- управление скроллом для устройств с колесом прокрутки. +- text input for keyboard devices; +- control of mouse, pen, or touch device; +- scroll control for devices with a scroll wheel. -Каждая цепочка вызовов `action` команд должна завершаться вызовом команды `perform`, чтобы начать выполнение указанного набора действий. Также это приводит к высвобождению всех нажатых клавиш, кнопок и т.д. на виртуальных устройствах ввода и запускает необходимые события. Высвобождение можно пропустить, передав аргумент `true` в команду `perform`. Пример: +Each chain of `action` commands must end with a `perform` command to execute the specified set of actions. This also releases all pressed keys, buttons, etc., on virtual input devices and triggers the necessary events. The release can be skipped by passing the argument `true` to the `perform` command. Example: ```typescript await browser.action(...).perform(true); ``` - Поддержка данной команды и конкретных действий может различаться в зависимости от среды - выполнения. За ходом разработки можно следить на [wpt.fyi][web-platform-tests]. Для мобильных - устройств вы можете использовать специальные команды жестов [Appium][appium] на - [iOS][appium-ios] и [Android][appium-android]. + Support for this command and specific actions may vary depending on the execution environment. + The development progress can be tracked on [wpt.fyi][web-platform-tests]. For mobile devices, + you can use specialized gesture commands with [Appium][appium] on [iOS][appium-ios] and + [Android][appium-android]. -## Управление клавиатурой {#keyboard_control} +## Keyboard Control {#keyboard_control} -Используется при указании `key` в качестве аргумента команды `action`. Пример: +Used when specifying `key` as the argument for the `action` command. Example: ```typescript await browser.action("key"); ``` -Возвращает объект `KeyAction`, который поддерживает следующие действия: +Returns a `KeyAction` object that supports the following actions: -- `down(value: string)` — создает действие нажатия клавиши; -- `up(value: string)` — создает действие отпускания клавиши; -- `pause(ms: number)` — указывает, что источник ввода ничего не делает указанное количество времени. +- `down(value: string)` — creates a key press action; +- `up(value: string)` — creates a key release action; +- `pause(ms: number)` — specifies that the input source does nothing for the specified amount of time. -### Специальные символы {#special_symbols} +### Special Symbols {#special_symbols} -Для использования специальных символов (`Control`, `Page Up`, `Shift` и т.д.) можно использовать объект `Key` из пакета [webdriverio][webdriverio-npm]. В нем содержатся unicode представления всех нужных специальных символов. Пример: +To use special symbols (`Control`, `Page Up`, `Shift`, etc.), you can use the `Key` object from the [webdriverio][webdriverio-npm] package. It contains Unicode representations of all necessary special symbols. Example: ```typescript import { Key } from "webdriverio"; @@ -49,50 +49,50 @@ import { Key } from "webdriverio"; await browser.action("key").down(Key.Ctrl).perform(); ``` -### Примеры использования {#keyboard_examples} +### Usage Examples {#keyboard_examples} ```typescript import { Key } from "webdriverio"; it("should emit key events using key action commands", async ({ browser }) => { const elem = await browser.$("input"); - await elem.click(); // сделать элемент активным + await elem.click(); // make the element active await browser.action("key").down("f").down("o").down("o").up("f").up("o").up("o").perform(); - console.log(await elem.getValue()); // возвращает "foo" + console.log(await elem.getValue()); // returns "foo" - // скопировать значение из элемента input + // copy value from input element await browser.action("key").down(Key.Ctrl).down("c").pause(10).up(Key.Ctrl).up("c").perform(); }); ``` -Вместо серии `down/up` событий лучше использовать команду `setValue`. Пример исключительно для демонстрации принципов работы команды `action`. +Instead of a series of `down/up` events, it is better to use the `setValue` command. The example is purely for demonstrating the principles of the `action` command. -## Управление указателем {#pointer_control} +## Pointer Control {#pointer_control} -Используется при указании `pointer` в качестве аргумента команды `action`, также можно указать тип указателя. Пример: +Used when specifying `pointer` as the argument for the `action` command, and you can also specify the pointer type. Example: ```typescript await browser.action("pointer", { - parameters: { pointerType: "mouse" }, // "mouse" значение по умолчанию, также доступны: "pen" or "touch" + parameters: { pointerType: "mouse" }, // "mouse" is the default value, also available: "pen" or "touch" }); ``` -Возвращает объект `PointerAction`, который поддерживает следующие действия: +Returns a `PointerAction` object that supports the following actions: -- `down(button: 'left' | 'middle' | 'right')` — создает действие для нажатия одной клавиши; -- `down(params: PointerActionParams)` — создает действие для нажатия одной клавиши с подробными параметрами; -- `move(x: number, y: number)` — создает действие для перемещения указателя на `x` и `y` пикселей относительно вьюпорта; -- `move(params: PointerActionMoveParams)` — создает действие для перемещения указателя на `x` и `y` пикселей из указанного начала координат. Начало координат может быть определено как текущая позиция указателя, вьюпорта или центр определенного элемента; -- `up(button: 'left' | 'middle' | 'right')` — создает действие для отпускания одной клавиши; -- `up(params: PointerActionUpParams)` — создает действие для отпускания одной клавиши с подробными параметрами; -- `cancel()` — создает действие, которое отменяет текущее положение указателя; -- `pause(ms: number)` — указывает, что источник ввода ничего не делает указанное количество времени. +- `down(button: 'left' | 'middle' | 'right')` — creates an action to press a key; +- `down(params: PointerActionParams)` — creates an action to press a key with detailed parameters; +- `move(x: number, y: number)` — creates an action to move the pointer by `x` and `y` pixels relative to the viewport; +- `move(params: PointerActionMoveParams)` — creates an action to move the pointer by `x` and `y` pixels from the specified origin. The origin can be defined as the current pointer position, the viewport, or the center of a specific element; +- `up(button: 'left' | 'middle' | 'right')` — creates an action to release a key; +- `up(params: PointerActionUpParams)` — creates an action to release a key with detailed parameters; +- `cancel()` — creates an action that cancels the current pointer position; +- `pause(ms: number)` — specifies that the input source does nothing for the specified amount of time. -Подробную информацию о типах параметров [PointerActionParams][pointer-action-params], [PointerActionMoveParams][pointer-action-move-params] и [PointerActionUpParams][pointer-action-up-params] можно найти в исходном коде webdriverio. +Detailed information on the parameter types [PointerActionParams][pointer-action-params], [PointerActionMoveParams][pointer-action-move-params], and [PointerActionUpParams][pointer-action-up-params] can be found in the webdriverio source code. -### Примеры использования {#pointer_examples} +### Usage Examples {#pointer_examples} ```typescript it("drag and drop using pointer action command", async ({ browser }) => { @@ -102,7 +102,7 @@ it("drag and drop using pointer action command", async ({ browser }) => { await browser .action("pointer") .move({ duration: 0, origin, x: 0, y: 0 }) - .down({ button: 0 }) // левая кнопка + .down({ button: 0 }) // left button .pause(10) .move({ duration: 0, origin: targetOrigin }) .up({ button: 0 }) @@ -110,26 +110,26 @@ it("drag and drop using pointer action command", async ({ browser }) => { }); ``` -## Управление колесом прокрутки {#scroll_wheel_control} +## Scroll Wheel Control {#scroll_wheel_control} -Используется при указании `wheel` в качестве аргумента команды `action`. Пример: +Used when specifying `wheel` as the argument for the `action` command. Example: ```typescript await browser.action("wheel"); ``` -Возвращает объект `WheelAction`, который поддерживает следующие действия: +Returns a `WheelAction` object that supports the following actions: -- `scroll(params: ScrollParams)` — прокручивает страницу до указанных координат или до начала координат; -- `pause(ms: number)` — указывает, что источник ввода ничего не делает указанное количество времени. +- `scroll(params: ScrollParams)` — scrolls the page to the specified coordinates or origin; +- `pause(ms: number)` — specifies that the input source does nothing for the specified amount of time. -Подробную информацию о типе параметра [ScrollParams][scroll-params] можно найти в исходном коде webdriverio. +Detailed information on the parameter type [ScrollParams][scroll-params] can be found in the webdriverio source code. -### Примеры использования {#scroll_examples} +### Usage Examples {#scroll_examples} ```typescript it("should scroll using wheel action commands", async ({ browser }) => { - console.log(await browser.execute(() => window.scrollY)); // возвращает 0 + console.log(await browser.execute(() => window.scrollY)); // returns 0 await browser .action("wheel") @@ -140,14 +140,18 @@ it("should scroll using wheel action commands", async ({ browser }) => { }) .perform(); - console.log(await browser.execute(() => window.scrollY)); // возвращает 500 + console.log(await browser.execute(() => window.scrollY)); // returns 500 }); ``` -## Связанные команды {#related} +## Related Commands {#related} - [actions](../actions) +## References + +We'd like to give credit to the original WebdriverIO docs [article](https://webdriver.io/docs/api/browser/action), from which we drew some information while writing our version. + [scrollIntoView]: ../../element/scrollIntoView [doubleClick]: ../../element/doubleClick [web-platform-tests]: https://wpt.fyi/results/webdriver/tests/perform_actions?label=experimental&label=master&aligned diff --git a/docs/commands/browser/actions.mdx b/docs/commands/browser/actions.mdx index b4b8552..8a03adc 100644 --- a/docs/commands/browser/actions.mdx +++ b/docs/commands/browser/actions.mdx @@ -1,16 +1,16 @@ # actions -## Обзор {#overview} +## Overview {#overview} -Используйте команду `actions`, чтобы выполнить несколько действий ввода в одном из виртуализируемых устройств в веб-браузере. Например для имитации масштабирования страницы. Больше подробной информации представлено в описании команды [action][action]. +Use the `actions` command to perform multiple input actions on one of the virtualizable devices in the web browser, for example, to simulate page zooming. More detailed information is provided in the description of the [action][action] command. -## Использование {#usage} +## Usage {#usage} ```typescript await browser.actions([action1, action2, ...]); ``` -## Примеры использования {#examples} +## Usage Examples {#examples} ```typescript it("run multiple actions at once for a pinch zoom", async ({ browser }) => { @@ -21,8 +21,12 @@ it("run multiple actions at once for a pinch zoom", async ({ browser }) => { }); ``` -## Связанные команды {#related} +## Related Commands {#related} - [action](../action) +## References + +We'd like to give credit to the original WebdriverIO docs [article](https://webdriver.io/docs/api/browser/actions), from which we drew some information while writing our version. + [action]: ../action diff --git a/docs/commands/browser/addCommand.mdx b/docs/commands/browser/addCommand.mdx index cf181f8..3e69e17 100644 --- a/docs/commands/browser/addCommand.mdx +++ b/docs/commands/browser/addCommand.mdx @@ -2,48 +2,48 @@ import Admonition from "@theme/Admonition"; # addCommand -## Обзор {#overview} +## Overview {#overview} -Используйте команду `addCommand`, чтобы добавить свою команду к браузеру _(browser)_ или к элементу _(element)_. Добавляемая команда может быть как синхронной, так и асинхронной. +Use the `addCommand` command to add your own command to the browser or to an element. The command being added can be either synchronous or asynchronous. - Подробнее о том, как добавлять свои кастомные команды, читайте в рецепте «[Как добавить свои - команды][how-to-add-custom-commands]». + Read more about how to add your custom commands in the recipe "[How to add custom + commands][how-to-add-custom-commands]". -## Использование {#usage} +## Usage {#usage} ```javascript await browser.addCommand(name, callback, elementScope); ``` -## Параметры команды {#parameters} +## Command Parameters {#parameters} - + - - - + + +
**Имя****Тип****Описание**
**Name****Type****Description**
nameStringИмя кастомной команды.
callbackFunctionФункция-реализация команды.
elementScopeBooleanЕсли значение _true_, то добавить команду к элементу, а не к браузеру. По умолчанию: _false_.
nameStringCustom command name.
callbackFunctionCommand implementation function.
elementScopeBooleanIf the value is _true_, add the command to the element instead of the browser. Default: _false_.
-## Примеры использования {#examples} +## Usage Examples {#examples} ```javascript -// добавляем команду getUrlAndTitle +// add the getUrlAndTitle command await browser.addCommand("getUrlAndTitle", async function (customParam) { return { - url: await this.getUrl(), // `this` здесь и ниже относится к объекту "browser" + url: await this.getUrl(), // `this` here and below refers to the "browser" object title: await this.getTitle(), customParam: customParam, }; }); -// используем новую команду getUrlAndTitle +// use the new getUrlAndTitle command it("should use my add command", async ({ browser }) => { await browser.url("https://webdriver.io"); @@ -58,8 +58,12 @@ it("should use my add command", async ({ browser }) => { }); ``` -## Связанные команды {#related} +## Related Commands {#related} - [overwriteCommand](../overwriteCommand) +## References + +We'd like to give credit to the original WebdriverIO docs [article](https://webdriver.io/docs/api/browser/addCommand), from which we drew some information while writing our version. + [how-to-add-custom-commands]: https://webdriver.io/docs/customcommands/#adding-custom-commands diff --git a/docs/commands/browser/assertView.mdx b/docs/commands/browser/assertView.mdx index 3c8570b..567fdc9 100644 --- a/docs/commands/browser/assertView.mdx +++ b/docs/commands/browser/assertView.mdx @@ -2,42 +2,43 @@ import Admonition from "@theme/Admonition"; # assertView -## Обзор {#overview} +## Overview {#overview} -Используйте команду `assertView`, чтобы снять скриншот для определенного состояния теста и сравнить его с эталонным. +Use the `assertView` command to take a screenshot for a specific test state and compare it with a reference. - Эта команда реализована внутри Testplane, в [API WebDriverIO][webdriverio-api] её нет. + This command is implemented within Testplane, it's not available in the [API + WebDriverIO][webdriverio-api]. -## Использование {#usage} +## Usage {#usage} ```typescript await browser.assertView(state, options); await browser.assertView(state, selector, options); ``` -## Параметры команды {#parameters} +## Command Parameters {#parameters} - + - - - + + +
**Имя****Тип****Описание**
**Name****Type****Description**
[state](#state)StringОбязательный параметр. Название состояния теста. Должно быть уникальным в пределах одного теста.
[selector](#selector)String или String[]Необязательный параметр. Может быть пропущен. Селектор DOM-элемента, который необходимо заснять. При отсутствии команда скриншотит viewport.
[options](#options)ObjectНастройки команды _assertView_.
[state](#state)StringRequired parameter. The name of the test state. It must be unique within a single test.
[selector](#selector)String or String[]Optional parameter. Can be skipped. The DOM element selector to capture. If skipped, current viewport is captured.
[options](#options)ObjectSettings for the _assertView_ command.
### state -Обязательный параметр. Задает название состояния теста. Название должно быть уникальным в пределах одного теста. +Required parameter. Specifies the name of the test state. The name must be unique within a single test. ### selector -Необязательный параметр. Может быть пропущен. Задает селектор DOM-элемента, который необходимо заснять. По умолчанию `body`. При его отсутствии `assertView` применяет следующие опции, которые имеют приоритет над `assertViewOpts` из конфига, но не над параметром `options`: +Required parameter. Specifies the selector of the DOM element to capture. If not specified or skipped, will be set to `body` and the following options will be automatically added to `options`: ``` { @@ -47,35 +48,36 @@ await browser.assertView(state, selector, options); } ``` -Таким образом, по умолчанию без параметра `options` `assertView` скриншотит viewport. +These additional options will have higher priority than `assertViewOpts` from config, but lower priority than options from `options` parameter passed by user. +So, assertView without `selector` parameter will take a screenshot of the current viewport. ### options -Задает настройки команды `assertView`: +Specifies the settings for the `assertView` command: - - - + + + - + @@ -83,7 +85,7 @@ await browser.assertView(state, selector, options); @@ -91,74 +93,74 @@ await browser.assertView(state, selector, options); - +
**Опция****Тип****Описание****Option****Type****Description**
ignoreElementsArray или StringArray or String - Элементы (задаются как селекторы), которые будут проигнорированы при сравнении - скриншотов. Игнор реализуется с помощью закраски перечисленных элементов черным - цветом. В случае одного элемента параметр можно задавать как строку. + Elements (specified as selectors) that will be ignored when comparing screenshots. + Ignoring is implemented by painting the listed elements black. For a single element, + the parameter can be set as a string.
tolerance Number - Чувствительность к разнице в цветам. Значение перетирает + Sensitivity to color differences. The value overrides [browsers.tolerance][browsers-tolerance].
antialiasingTolerance Number - Чувствительность в антиалиасинге. Значение перетирает + Sensitivity to anti-aliasing. The value overrides [browsers.antialiasingTolerance][browsers-antialiasing-tolerance].
allowViewportOverflow Boolean - По умолчанию Testplane выдает ошибку, если элемент находится за пределами границ - вьюпорта. Этот параметр отключает проверку на границы, позволяя снимать скриншоты - элементов, не влезающих во вьюпорт. При этом на скриншоте будут видны только те - части элемента, которые влезли во вьюпорт. Однако если _compositeImage_ равен - _true_, то части элемента, которые оказались за _нижней_ границей вьюпорта, тоже - будут видны на скриншоте. Аналогично если _captureElementFromTop_ равен _true_, то - на скриншот попадут и те части элемента, которые оказались за пределами _верхней_ - границы вьюпорта. + By default, Testplane throws an error if the element is outside the viewport + boundaries. This parameter disables boundary checks, allowing screenshots of + elements that don't fully fit in the viewport. On the screenshot, only the parts of + the element that fit into the viewport will be visible. However, if _compositeImage_ + is set to _true_, the parts of the element that are below the viewport boundary will + also be visible in the screenshot. Similarly, if _captureElementFromTop_ is set to + _true_, the parts of the element that are above the viewport boundary will also be + captured in the screenshot.
captureElementFromTop Boolean - Снимать скриншот элемента с самого верха. Если элемент находится за пределами - вьюпорта, то к нему будет выполнен подскролл. + Capture the screenshot of the element from the very top. If the element is outside + the viewport, it will be scrolled into view.
compositeImage Boolean - Если элемент не влазит во вьюпорт, то при включении этой опции поочередно будет - сделано несколько скриншотов разных частей элемента, после чего скриншоты будут - склеены в один, чтобы отобразить элемент полностью. + If the element does not fit into the viewport, multiple screenshots of different + parts of the element will be taken sequentially, and then stitched together into one + to display the entire element.
screenshotDelay Number - Задержка в миллисекундах перед снятием скриншота. Может пригодиться, когда на - странице есть элементы, использующие анимацию, или скроллбар, который исчезает не - сразу и попадает на результирующий скриншот. + Delay in milliseconds before taking a screenshot. Useful when there are elements + with animations on the page, or a scrollbar that does not disappear immediately and + appears in the resulting screenshot.
selectorToScroll String - Селектор, который нужно скроллировать. Может пригодиться, когда надо сделать - скриншот модального окна, которое не помещается на экране. Иначе без указания - селектора скролл будет применяться к объекту _window_, и скроллироваться будет - задний фон, оставляя попап-окно на месте. + Selector to scroll. Useful when you need to take a screenshot of a modal window that + doesn’t fit on the screen. Otherwise, without specifying a selector, the scroll will + be applied to the _window_ object, scrolling the background while keeping the popup + window in place.
disableAnimation Boolean - Отключение анимаций и переходов при снятии скриншота. По умолчанию `true` начиная с - версии `8.0.0`. + Disable animations and transitions when taking a screenshot. Default is `true` + starting from version `8.0.0`.
ignoreDiffPixelCount`` `${number}%` `` или Number`` `${number}%` `` or Number - Процент пикселей, которые нужно игнорировать при диффе. Удобно для игнорирования - очень маленьких диффов. По умолчанию `0`. Доступен начиная с версии `8.2.0`. + The percentage of pixels to ignore during the diff. Useful to ignore very small + differences. Default is `0`. Available starting from version `8.2.0`.
-## Примеры использования {#examples} +## Usage Examples {#examples} -**Визуальная проверка элемента** +**Visual check of certain element** ```typescript it("should assert view", async ({ browser }) => { @@ -170,7 +172,7 @@ it("should assert view", async ({ browser }) => { }); ``` -**Визуальная проверка всего вьюпорта** +**Visual check of current viewport** ```typescript it("should assert viewport without selector", async ({ browser }) => { @@ -183,7 +185,7 @@ it("should assert viewport without selector", async ({ browser }) => { }); ``` -**Визуальная проверка с дополнительными опциями** +**Visual check with additional options** ```typescript it("should assert view with given options", async ({ browser }) => { @@ -201,7 +203,7 @@ it("should assert view with given options", async ({ browser }) => { }); ``` -## Связанные команды {#related} +## Related Commands {#related} - [element.assertView](../../element/assertView) - [browser.saveRecordingScreen](../saveRecordingScreen) diff --git a/docs/commands/browser/call.mdx b/docs/commands/browser/call.mdx index f9cad7e..40432fc 100644 --- a/docs/commands/browser/call.mdx +++ b/docs/commands/browser/call.mdx @@ -1,46 +1,46 @@ # call -## Обзор {#overview} +## Overview {#overview} -Используйте команду `call` для выполнения любого асинхронного действия в тестах. +Use the `call` command to perform any asynchronous action in tests. -Сама команда при этом обрабатывается как синхронная функция. Она принимает промис и останавливает свое выполнение до тех пор, пока промис не будет выполнен. +This command is treated as a synchronous function. It accepts a promise and halts its execution until the promise is resolved. -## Использование {#usage} +## Usage {#usage} ```javascript await browser.call(callback); ``` -## Параметры команды {#parameters} +## Command Parameters {#parameters} - + - +
**Имя****Тип****Описание**
**Name****Type****Description**
callbackFunctionФункция, которую нужно вызвать.
callbackFunctionThe function to call.
-## Примеры использования {#examples} +## Usage Examples {#examples} ```javascript it("some testing here", async ({ browser }) => { await browser.url("http://google.com"); - // делаем асинхронный вызов с помощью сторонней библиотеки, - // поддерживающей промисы, например, вызов к бэкенду или БД, - // чтобы сделать инъекцию фикстуры + // make an asynchronous call using a third-party library + // that supports promises, e.g., a call to a backend or DB + // to inject a fixture await browser.call(() => { return somePromiseLibrary.someMethod().then(() => { // ... }); }); - // пример для асинхронного вызова сторонней библиотеки, - // не поддерживающей промисы + // example for an asynchronous call using a third-party library + // that does not support promises const result = await browser.call(() => { return new Promise((resolve, reject) => { someOtherNodeLibrary.someMethod(param1, (err, res) => { @@ -53,3 +53,7 @@ it("some testing here", async ({ browser }) => { }); }); ``` + +## References + +We'd like to give credit to the original WebdriverIO docs [article](https://webdriver.io/docs/api/browser/call), from which we drew some information while writing our version. diff --git a/docs/commands/browser/clearSession.mdx b/docs/commands/browser/clearSession.mdx index c530c4e..460c6d1 100644 --- a/docs/commands/browser/clearSession.mdx +++ b/docs/commands/browser/clearSession.mdx @@ -1,16 +1,16 @@ # clearSession -## Обзор {#overview} +## Overview {#overview} -Команда браузера, которая очищает состояние сессии (удаляет куки, очищает локальное и сессионное хранилища). +Browser command that clears session state (deletes cookies, clears local and session storages). -## Использование {#usage} +## Usage {#usage} ```javascript await browser.clearSession(); ``` -## Примеры использования {#examples} +## Usage Examples {#examples} ```typescript it("test", async ({ browser }) => { diff --git a/docs/commands/browser/debug.mdx b/docs/commands/browser/debug.mdx index dd39d33..b0e87b3 100644 --- a/docs/commands/browser/debug.mdx +++ b/docs/commands/browser/debug.mdx @@ -1,27 +1,31 @@ # debug -## Обзор {#overview} +## Overview {#overview} -Используйте команду `debug`, чтобы остановить выполнение теста в браузере. +Use the `debug` command to pause the execution of a test in the browser. -Остановив работу теста, вы можете перейти в браузер, открыть _DevTools_ и в реальном времени проинспектировать web-страницу. Это может быть полезно для отладки теста. +By pausing the test, you can switch to the browser, open _DevTools_, and inspect the web page in real-time. This can be useful for debugging the test. -## Использование {#usage} +## Usage {#usage} ```javascript await browser.debug(); ``` -## Примеры использования {#examples} +## Usage Examples {#examples} ```javascript it("should demonstrate the debug command", async ({ browser }) => { await browser.$("#input").setValue("FOO"); - await browser.debug(); // перейдите в браузер и измените значение #input на "BAR" + await browser.debug(); // switch to the browser and change the value of #input to "BAR" const value = await browser.$("#input").getValue(); - console.log(value); // выведет: "BAR" + console.log(value); // outputs: "BAR" }); ``` + +## References + +We'd like to give credit to the original WebdriverIO docs [article](https://webdriver.io/docs/api/browser/debug), from which we drew some information while writing our version. diff --git a/docs/commands/browser/deleteCookies.mdx b/docs/commands/browser/deleteCookies.mdx index 106b4bb..b65c24b 100644 --- a/docs/commands/browser/deleteCookies.mdx +++ b/docs/commands/browser/deleteCookies.mdx @@ -1,30 +1,30 @@ # deleteCookies -## Обзор {#overview} +## Overview {#overview} -Используйте команду `deleteCookies`, чтобы удалить все или конкретные _cookies_ для текущей страницы. +Use the `deleteCookies` command to delete all or specific cookies for the current page. -Чтобы удалить конкретные _cookies_, нужно указать имя _cookie_ в виде строки или список имен _cookies_ в виде массива строк. +To delete specific cookies, you need to specify the cookie name as a string or a list of cookie names as an array of strings. -## Использование {#usage} +## Usage {#usage} ```javascript await browser.deleteCookies(names); ``` -## Параметры команды {#parameters} +## Command Parameters {#parameters} - + - +
**Имя****Тип****Описание**
**Name****Type****Description**
namesString или String[]Необязательный параметр. Имя _cookie_ или список имен _cookies_, которые необходимо удалить. При отсутствии параметра будут удалены все _cookies_ для текущей страницы.
namesString or String[]Optional parameter. The cookie name or list of cookie names to delete. If the parameter is missing, all cookies for the current page will be deleted.
-## Примеры использования {#examples} +## Usage Examples {#examples} ```javascript it("should delete cookies", async ({ browser }) => { @@ -36,10 +36,10 @@ it("should delete cookies", async ({ browser }) => { let cookies = await browser.getCookies(); console.log(cookies); - // выведет: + // outputs: // [ // { name: 'test', value: '123' }, - // { name: 'test2', value: '456' } + // { name: 'test2', value: '456' }, // { name: 'test3', value: '789' } // ] @@ -47,7 +47,7 @@ it("should delete cookies", async ({ browser }) => { cookies = await browser.getCookies(); console.log(cookies); - // выведет: + // outputs: // [ // { name: 'test', value: '123' }, // { name: 'test2', value: '456' } @@ -55,11 +55,15 @@ it("should delete cookies", async ({ browser }) => { await browser.deleteCookies(); cookies = await browser.getCookies(); - console.log(cookies); // выведет: [] + console.log(cookies); // outputs: [] }); ``` -## Связанные команды {#related} +## Related Commands {#related} - [getCookies](../getCookies) - [setCookies](../setCookies) + +## References + +We'd like to give credit to the original WebdriverIO docs [article](https://webdriver.io/docs/api/browser/deleteCookies), from which we drew some information while writing our version. diff --git a/docs/commands/browser/execute.mdx b/docs/commands/browser/execute.mdx index fbda55c..e9a7110 100644 --- a/docs/commands/browser/execute.mdx +++ b/docs/commands/browser/execute.mdx @@ -1,41 +1,41 @@ # execute -## Обзор {#overview} +## Overview {#overview} -Используйте `execute`, чтобы выполнить _синхронно_ указанный JavaScript-код на странице текущего выбранного фрейма. +Use `execute` to _synchronously_ execute the specified JavaScript code in the context of the currently selected frame. -Команда возвращает клиенту результат выполнения скрипта. +The command returns the result of the script execution to the client. -Аргумент `script` определяет сценарий для выполнения в виде тела функции. Значение, возвращаемое этой функцией, будет возвращено клиенту. Функция будет вызвана с предоставленным массивом `args`, и доступ к значениям может быть получен через объект `arguments` в указанном порядке. +The `script` argument defines the script to be executed as the body of a function. The value returned by this function will be returned to the client. The function will be invoked with the provided array of `args`, and access to the values can be obtained through the `arguments` object in the specified order. -Аргументами могут быть любые JSON-примитивы, массивы или объекты JSON. Объекты JSON, которые определяют ссылку на _WebElement,_ будут преобразованы в соответствующий элемент DOM. Аналогично, любые _WebElements_ в результате скрипта будут возвращены клиенту в виде объектов _WebElement JSON_. +Arguments can be any JSON primitives, arrays, or JSON objects. JSON objects that define a reference to a _WebElement_ will be converted to the corresponding DOM element. Similarly, any _WebElements_ in the script result will be returned to the client as _WebElement JSON_ objects. -## Использование {#usage} +## Usage {#usage} ```javascript await browser.execute(script, arguments); ``` -## Параметры команды {#parameters} +## Command Parameters {#parameters} - + - - + +
**Имя****Тип****Описание**
**Name****Type****Description**
scriptString или FunctionСкрипт, который необходимо выполнить.
argumentsAnyНеобязательный параметр. Аргументы для скрипта.
scriptString or FunctionThe script to be executed.
argumentsAnyOptional parameter. Arguments for the script.
-## Примеры использования {#examples} +## Usage Examples {#examples} ```javascript it("should inject javascript on the page", async ({ browser }) => { const result = await browser.execute( (a, b, c, d) => { - // здесь мы в browser-контексте: доступа к консоли и к клиенту у нас нет + // here we are in the browser context: no access to console or client return a + b + c + d; }, 1, @@ -44,12 +44,16 @@ it("should inject javascript on the page", async ({ browser }) => { 4, ); - // здесь мы в node.js-контексте: доступ к консоли и к клиенту у нас есть - console.log(result); // выведет: 10 + // here we are in the node.js context: access to console and client is available + console.log(result); // outputs: 10 }); ``` -## Связанные команды {#related} +## Related Commands {#related} - [executeAsync](../executeAsync) - [setTimeout](../setTimeout) + +## References + +We'd like to give credit to the original WebdriverIO docs [article](https://webdriver.io/docs/api/browser/execute), from which we drew some information while writing our version. diff --git a/docs/commands/browser/executeAsync.mdx b/docs/commands/browser/executeAsync.mdx index a13ff33..f4feab1 100644 --- a/docs/commands/browser/executeAsync.mdx +++ b/docs/commands/browser/executeAsync.mdx @@ -1,35 +1,35 @@ # executeAsync -## Обзор {#overview} +## Overview {#overview} -Используйте команду `executeAsync`, чтобы выполнить _асинхронно_ указанный JavaScript-код на странице текущего выбранного фрейма. +Use the `executeAsync` command to _asynchronously_ execute the specified JavaScript code in the context of the currently selected frame. -Последним аргументом команды должен быть колбэк, который будет вызван, как только скрипт завершит свою работу. В качестве входного параметра команда передает в колбэк результат выполнения скрипта. +The last argument of the command must be a callback that will be called as soon as the script completes its execution. The command passes the script result to the callback as an input parameter. -Аргумент `script` определяет сценарий для выполнения в виде тела функции. Функция будет вызвана с предоставленным массивом `args`, и доступ к значениям может быть получен через объект `arguments` в указанном порядке. Последним аргументом всегда должна быть колбэк-функция, которая будет вызвана после того, как скрипт будет выполнен. +The `script` argument defines the script to be executed as the body of a function. The function will be invoked with the provided array of `args`, and access to the values can be obtained through the `arguments` object in the specified order. The last argument must always be a callback function, which will be called once the script has been executed. -Аргументами могут быть любые JSON-примитивы, массивы или объекты JSON. Объекты JSON, которые определяют ссылку на _WebElement,_ будут преобразованы в соответствующий элемент DOM. Аналогично, любые _WebElements_ в результате скрипта будут возвращены клиенту в виде объектов _WebElement JSON_. +Arguments can be any JSON primitives, arrays, or JSON objects. JSON objects that define a reference to a _WebElement_ will be converted to the corresponding DOM element. Similarly, any _WebElements_ in the script result will be returned to the client as _WebElement JSON_ objects. -## Использование {#usage} +## Usage {#usage} ```javascript await browser.executeAsync(script, arguments); ``` -## Параметры команды {#parameters} +## Command Parameters {#parameters} - + - - + +
**Имя****Тип****Описание**
**Name****Type****Description**
scriptString или FunctionСкрипт, который необходимо выполнить.
argumentsAnyАргументы для скрипта. Последним аргументом должна быть колбэк-функция, которая будет вызвана после того, как скрипт будет выполнен.
scriptString or FunctionThe script to be executed.
argumentsAnyArguments for the script. The last argument must be a callback function, which will be called once the script has been executed.
-## Примеры использования {#examples} +## Usage Examples {#examples} ```javascript it("should execute async JavaScript on the page", async ({ browser }) => { @@ -37,7 +37,7 @@ it("should execute async JavaScript on the page", async ({ browser }) => { const result = await browser.executeAsync( function (a, b, c, d, done) { - // здесь мы в browser-контексте: доступа к консоли и к клиенту у нас нет + // here we are in the browser context: no access to console or client setTimeout(() => { done(a + b + c + d); }, 3000); @@ -48,12 +48,16 @@ it("should execute async JavaScript on the page", async ({ browser }) => { 4, ); - // здесь мы в node.js-контексте: доступ к консоли и к клиенту у нас есть - console.log(result); // выведет: 10 + // here we are in the node.js context: access to console and client is available + console.log(result); // outputs: 10 }); ``` -## Связанные команды {#related} +## Related Commands {#related} - [execute](../execute) - [setTimeout](../setTimeout) + +## References + +We'd like to give credit to the original WebdriverIO docs [article](https://webdriver.io/docs/api/browser/executeAsync), from which we drew some information while writing our version. diff --git a/docs/commands/browser/executionContext.mdx b/docs/commands/browser/executionContext.mdx index 416b78a..e9f8772 100644 --- a/docs/commands/browser/executionContext.mdx +++ b/docs/commands/browser/executionContext.mdx @@ -2,24 +2,25 @@ import Admonition from "@theme/Admonition"; # executionContext -## Обзор {#overview} +## Overview {#overview} -Во время прогона тестов testplane добавляет в `browser` свойство `executionContext` для хранения контекста исполнения. +During the test run, Testplane adds an `executionContext` property to `browser` to store the execution context. -В свойстве `browser.executionContext` хранится текущий объект теста или хука \_Mocha, дополненный идентификатором браузера. +The `browser.executionContext` property holds the current test or hook \_Mocha object, supplemented with a browser identifier. - Контекст исполнения добавляет testplane, в [API WebDriverIO][webdriverio-api] его нет. + The execution context is added by Testplane and is not available in the [API + WebDriverIO][webdriverio-api]. -## Пример использования {#examples} +## Usage Example {#examples} ```javascript it("should log execution context", async ({ browser }) => { await browser.url("/foo/bar"); console.log("test", browser.executionContext); - // выведет: + // outputs: // test: { // "title": "should log execution context", // "async": 0, diff --git a/docs/commands/browser/getConfig.mdx b/docs/commands/browser/getConfig.mdx index 898aed7..be96867 100644 --- a/docs/commands/browser/getConfig.mdx +++ b/docs/commands/browser/getConfig.mdx @@ -1,26 +1,26 @@ # getConfig -## Обзор {#overview} +## Overview {#overview} -Используйте команду `getConfig`, чтобы получить [конфиг][browser-config] браузера. +Use the `getConfig` command to get the browser [config][browser-config]. -## Использование {#usage} +## Usage {#usage} ```javascript await browser.getConfig(); ``` -## Примеры использования {#examples} +## Usage Examples {#examples} ```javascript it("some test", async ({ browser }) => { const browserConfig = await browser.getConfig(); console.log(browserConfig.id); - // выведет: "chromeDesktop" – название конфигурации браузера, указанное в конфиге + // outputs: "chromeDesktop" – the name of the browser configuration specified in the config const { browserName } = browserConfig.desiredCapabilities; console.log(browserName); - // выведет: "chrome" – фактическое название браузера + // outputs: "chrome" – the actual name of the browser }); ``` diff --git a/docs/commands/browser/getCookies.mdx b/docs/commands/browser/getCookies.mdx index cd1b256..c875668 100644 --- a/docs/commands/browser/getCookies.mdx +++ b/docs/commands/browser/getCookies.mdx @@ -1,30 +1,30 @@ # getCookies -## Обзор {#overview} +## Overview {#overview} -Используйте команду `getCookies`, чтобы получить все или конкретные _cookies_ на текущей странице. +Use the `getCookies` command to get all or specific cookies on the current page. -Чтобы получить конкретные куки, нужно указать имя _cookie_ в виде строки или список имен _cookies_ в виде массива строк. +To get specific cookies, you need to specify the cookie name as a string or a list of cookie names as an array of strings. -## Использование {#usage} +## Usage {#usage} ```javascript await browser.getCookies(names); ``` -## Параметры команды {#parameters} +## Command Parameters {#parameters} - + - +
**Имя****Тип****Описание**
**Name****Type****Description**
namesString или String[]Необязательный параметр. Имя _cookie_ или список имен _cookies_, которые необходимо получить. При отсутствии параметра будут возвращены все _cookies_ для текущей страницы.
namesString or String[]Optional parameter. The name of the cookie or list of cookie names to get. If the parameter is missing, all cookies for the current page will be returned.
-## Примеры использования {#examples} +## Usage Examples {#examples} ```javascript it("should return a cookie for me", async ({ browser }) => { @@ -35,14 +35,14 @@ it("should return a cookie for me", async ({ browser }) => { const testCookie = await browser.getCookies(["test"]); console.log(testCookie); - // выведет: + // outputs: // [ // { name: 'test', value: '123' } // ] const allCookies = await browser.getCookies(); console.log(allCookies); - // выведет: + // outputs: // [ // { name: 'test', value: '123' }, // { name: 'test2', value: '456' } @@ -50,7 +50,11 @@ it("should return a cookie for me", async ({ browser }) => { }); ``` -## Связанные команды {#related} +## Related Commands {#related} - [setCookies](../setCookies) - [deleteCookies](../deleteCookies) + +## References + +We'd like to give credit to the original WebdriverIO docs [article](https://webdriver.io/docs/api/browser/getCookies), from which we drew some information while writing our version. diff --git a/docs/commands/browser/getMeta.mdx b/docs/commands/browser/getMeta.mdx index 2f0487d..1619f97 100644 --- a/docs/commands/browser/getMeta.mdx +++ b/docs/commands/browser/getMeta.mdx @@ -2,44 +2,45 @@ import Admonition from "@theme/Admonition"; # getMeta -## Обзор +## Overview -Используйте команду `getMeta`, чтобы получить мета-информацию о тесте. +Use the `getMeta` command to retrieve metadata about the test. -Если указать ключ, то команда возвращает значение для конкретного ключа. -Если ключ не указан, команда вернет объект со всей мета-информацией теста. +If a key is specified, the command returns the value for that specific key. +If the key is not specified, the command will return an object with all the metadata for the test. -Для установки значений в мета-информации используйте команду [setMeta](../setMeta). +To set values in the metadata, use the [setMeta](../setMeta) command. - Эта команда реализована внутри testplane, в [API WebDriverIO][webdriverio-api] её нет. + This command is implemented within Testplane and is not available in the [API + WebDriverIO][webdriverio-api]. -## Использование {#usage} +## Usage {#usage} ```javascript await browser.getMeta(); ``` -или +or ```javascript await browser.getMeta(key); ``` -## Параметры команды {#parameters} +## Command Parameters {#parameters} - + - +
**Имя****Тип****Описание**
**Name****Type****Description**
keyStringНеобязательный параметр. Ключ, значение которого нужно получить из мета-информации теста.
keyStringOptional parameter. The key whose value needs to be retrieved from the test metadata.
-## Примеры использования {#examples} +## Usage Examples {#examples} ```javascript it("should get meta info of test", async ({ browser }) => { @@ -47,17 +48,17 @@ it("should get meta info of test", async ({ browser }) => { await browser.url("/foo/bar?baz=qux"); const val = await browser.getMeta("foo"); - console.log(val); // выведет: bar + console.log(val); // outputs: bar const url = await browser.getMeta("url"); - console.log(url); // выведет: /foo/bar?baz=qux + console.log(url); // outputs: /foo/bar?baz=qux const meta = await browser.getMeta(); - console.log(meta); // выведет: {foo: 'bar', url: '/foo/bar?baz=qux'} + console.log(meta); // outputs: {foo: 'bar', url: '/foo/bar?baz=qux'} }); ``` -## Связанные команды {#related} +## Related Commands {#related} - [setMeta](../setMeta) diff --git a/docs/commands/browser/getPuppeteer.mdx b/docs/commands/browser/getPuppeteer.mdx index 7212eb7..9159b42 100644 --- a/docs/commands/browser/getPuppeteer.mdx +++ b/docs/commands/browser/getPuppeteer.mdx @@ -2,46 +2,50 @@ import Admonition from "@theme/Admonition"; # getPuppeteer -## Обзор {#overview} +## Overview {#overview} -Используйте команду `getPuppeteer`, чтобы получить инстанс [Puppeteer][puppeteer] браузера для последующего выполнения с его помощью специальных команд. +Use the `getPuppeteer` command to get an instance of the browser's [Puppeteer][puppeteer] in order to execute specialized commands with it. -Обратите внимание, что все команды [Puppeteer][puppeteer] по умолчанию асинхронны, поэтому, чтобы переключаться между синхронным и асинхронным выполнением, обязательно оберните вызовы [Puppeteer][puppeteer] в [browser.call][browser-call], как показано ниже в примере. +Please note that all [Puppeteer][puppeteer] commands are asynchronous by default, so to switch between synchronous and asynchronous execution, be sure to wrap [Puppeteer][puppeteer] calls in [browser.call][browser-call], as shown in the example below. -Команда _getPuppeteer_ работает только при использовании _Chrome DevTools Protocol (CDP)_. +The _getPuppeteer_ command only works when using _Chrome DevTools Protocol (CDP)_. -Читайте подробности в разделе «[Как использовать Chrome DevTools Protocol в testplane][how-to-use-cdp]». +Read more in the section "[How to use Chrome DevTools Protocol in testplane][how-to-use-cdp]". -## Использование {#usage} +## Usage {#usage} ```javascript await browser.getPuppeteer(); ``` -## Примеры использования {#examples} +## Usage Examples {#examples} ```javascript -it('should allow me to use Puppeteer', async ({ browser }) => { - await browser.url('https://webdriver.io'); +it("should allow me to use Puppeteer", async ({ browser }) => { + await browser.url("https://webdriver.io"); const puppeteerBrowser = await browser.getPuppeteer(); - // переключаемся на Puppeteer + // switch to Puppeteer const metrics = await browser.call(async () => { - await pages = await puppeteerBrowser.pages(); + const pages = await puppeteerBrowser.pages(); - pages[0].setGeolocation({ latitude: 59.95, longitude: 30.31667 }); + await pages[0].setGeolocation({ latitude: 59.95, longitude: 30.31667 }); return pages[0].metrics(); }); - console.log(metrics.LayoutCount); // выведет: 42 + console.log(metrics.LayoutCount); // outputs: 42 }); ``` [how-to-use-cdp]: ../../../guides/how-to-use-cdp [puppeteer]: https://pptr.dev/#?product=Puppeteer&version=v5.1.0&show=api-class-browser [browser-call]: ../call + +## References + +We'd like to give credit to the original WebdriverIO docs [article](https://webdriver.io/docs/api/browser/getPuppeteer), from which we drew some information while writing our version. diff --git a/docs/commands/browser/getWindowSize.mdx b/docs/commands/browser/getWindowSize.mdx index 326ef95..7a31f66 100644 --- a/docs/commands/browser/getWindowSize.mdx +++ b/docs/commands/browser/getWindowSize.mdx @@ -1,25 +1,29 @@ # getWindowSize -## Обзор {#overview} +## Overview {#overview} -Используйте команду `getWindowSize`, чтобы получить размер окна браузера. +Use the `getWindowSize` command to get the size of the browser window. -## Использование {#usage} +## Usage {#usage} ```javascript await browser.getWindowSize(); ``` -## Примеры использования {#examples} +## Usage Examples {#examples} ```javascript it("should return browser window size", async ({ browser }) => { const windowSize = await browser.getWindowSize(); - console.log(windowSize); // выведет: { width: 1280, height: 767 } + console.log(windowSize); // outputs: { width: 1280, height: 767 } }); ``` -## Связанные команды {#related} +## Related Commands {#related} - [setWindowSize](../setWindowSize) + +## References + +We'd like to give credit to the original WebdriverIO docs [article](https://webdriver.io/docs/api/browser/getWindowSize), from which we drew some information while writing our version. diff --git a/docs/commands/browser/keys.mdx b/docs/commands/browser/keys.mdx index b4abb9f..51c03fb 100644 --- a/docs/commands/browser/keys.mdx +++ b/docs/commands/browser/keys.mdx @@ -1,36 +1,43 @@ # keys -## Обзор {#overview} +## Overview {#overview} -Используйте команду `keys`, чтобы отправить последовательность нажатий клавиш в активный элемент. +Use the `keys` command to send a sequence of key presses to the active element. -Вы можете также использовать символы «Левая стрелка» или «Правая стрелка». Они будут автоматически преобразованы в соответствующие unicode-символы. Все поддерживаемые символы вы можете посмотреть [здесь][keyboard-actions]. +You can also use symbols like “Left Arrow” or “Right Arrow”. They will be automatically transformed to the corresponding unicode characters. You can see all supported characters [here][keyboard-actions]. -Модификаторы типа `Ctrl`, `Shift`, `Alt` и `Meta` остаются нажатыми, пока вы сами не освободите их повторным вызовом. Однако модификация клика требует использования метода [performActions][perform-actions] из _WebDriver Actions API_. +Modifiers such as `Ctrl`, `Shift`, `Alt`, and `Meta` remain pressed until you release them by calling the function again. However, modifying clicks requires using the [performActions][perform-actions] method from the WebDriver Actions API. -## Использование {#usage} +## Usage {#usage} ```javascript await browser.keys(value); ``` -## Параметры команды {#parameters} +## Command Parameters {#parameters} - - - - - - - + + + + + + + + + + + + + +
**Имя****Тип****Описание**
valueString или String[]Последовательность клавиш, которые нужно напечатать.
**Name****Type****Description**
valueString or String[]The sequence of keys to type.
-## Примеры использования {#examples} +## Usage Examples {#examples} ```javascript it("copies text out of active element", async ({ browser }) => { - // копируем текст из элемента ввода + // copy text from input element await browser.$("#username").setValue("anonymous"); await browser.keys(["Meta", "a"]); @@ -38,5 +45,9 @@ it("copies text out of active element", async ({ browser }) => { }); ``` +## References + +We'd like to give credit to the original WebdriverIO docs [article](https://webdriver.io/docs/api/browser/keys), from which we drew some information while writing our version. + [keyboard-actions]: https://w3c.github.io/webdriver/#keyboard-actions [perform-actions]: https://webdriver.io/docs/api/webdriver#performactions diff --git a/docs/commands/browser/mock.mdx b/docs/commands/browser/mock.mdx index d57f6fa..0c83283 100644 --- a/docs/commands/browser/mock.mdx +++ b/docs/commands/browser/mock.mdx @@ -2,68 +2,68 @@ import Admonition from "@theme/Admonition"; # mock -## Обзор {#overview} +## Overview {#overview} -Используйте команду `mock`, чтобы имитировать ответ на запрос. +Use the `mock` command to mock the response to a request. -Вы можете включать имитацию в зависимости от урла, заголовков или статус-кода. Вызов метода `mock` возвращает объект-заглушку _(stub)_, который вы можете использовать, чтобы модифицировать ответ от веб-ресурса. С помощью объекта-заглушки вы можете возвращать ответ-имитацию или ронять запрос. +You can enable mocking depending on the URL, headers, or status code. Calling the `mock` method returns a stub object that you can use to modify the response from the web resource. With the stub object, you can return a mock response or abort the request. -Существует 3 способа модифицировать ответ: +There are 3 ways to modify the response: -- вернуть кастомный JSON-объект (например, чтобы имитировать ответ на API-запрос); -- заменить ответ локальным файлом (подсунуть модифицированный JavaScript-файл); -- перенаправить на другой URL и подсунуть полученный оттуда ответ. +- return a custom JSON object (e.g., to mock an API response); +- replace the response with a local file (inject a modified JavaScript file); +- redirect to another URL and return the response from there. -Команда _mock_ работает только при использовании _Chrome DevTools Protocol (CDP)_. +The _mock_ command only works when using _Chrome DevTools Protocol (CDP)_. -Читайте подробности в разделе «[Как использовать Chrome DevTools Protocol в testplane][how-to-use-cdp]». +Read more in the section "[How to use Chrome DevTools Protocol in testplane][how-to-use-cdp]". -А также читайте рецепт «[Как отслеживать и перехватывать сетевые запросы и ответы][how-to-intercept-requests-and-responses]». +Also, see the recipe "[How to intercept requests and responses][how-to-intercept-requests-and-responses]". -## Использование {#usage} +## Usage {#usage} ```javascript await browser.mock(url, { method, headers, responseHeaders, postData, statusCode }); ``` -## Параметры команды {#parameters} +## Command Parameters {#parameters} - + - - - - - - + + + + + +
**Имя****Тип****Описание**
**Name****Type****Description**
urlStringURL, запрос которого нужно имитировать.
methodString или Functionhttp-метод, по которому нужно фильтровать ресурс.
headersObject или FunctionЗаголовки запроса, по которым нужно фильтровать ресурс.
responseHeadersObject или FunctionЗаголовки ответа, по которым нужно фильтровать ресурс.
postDataString или FunctionpostData запроса, по которому нужно фильтровать ресурс.
statusCodeNumber или FunctionКод статуса, по которому нужно фильтровать ресурс.
urlStringThe URL of the request to mock.
methodString or FunctionThe HTTP method to filter the resource.
headersObject or FunctionThe request headers to filter the resource.
responseHeadersObject or FunctionThe response headers to filter the resource.
postDataString or FunctionThe request postData to filter the resource.
statusCodeNumber or FunctionThe status code to filter the resource.
-## Примеры использования {#examples} +## Usage Examples {#examples} ```javascript it("should mock network resources", async ({ browser }) => { - // используем статическую строку + // use a static string const userListMock = await browser.mock("**" + "/users/list"); - // также мы можем имитировать ответы в зависимости - // от заголовков запроса или ответа, статус-кода, или postData + // we can also mock responses based on + // request or response headers, status code, or postData const strictMock = await browser.mock("**", { - // мокаем все json-ответы + // mock all json responses statusCode: 200, headers: { "Content-Type": "application/json" }, responseHeaders: { "Cache-Control": "no-cache" }, postData: "foobar", }); - // функция-компаратор + // comparator function const apiV1Mock = await browser.mock("**" + "/api/v1", { statusCode: statusCode => statusCode >= 200 && statusCode <= 203, headers: headers => @@ -74,12 +74,12 @@ it("should mock network resources", async ({ browser }) => { }); it("should modify API responses", async ({ browser }) => { - // фильтруем по методу + // filter by method const todoMock = await browser.mock("**" + "/todos", { method: "get", }); - // имитируем ответ эндпойнта заготовленной фикстурой + // mock the response of the endpoint with predefined fixture mock.respond([ { title: "Injected Todo", @@ -89,7 +89,7 @@ it("should modify API responses", async ({ browser }) => { }, ]); - // отвечаем другим статус-кодом или заголовком + // respond with a different status code or header mock.respond( [ { @@ -122,14 +122,18 @@ it("should redirect web resources", async ({ browser }) => { await browser.url("https://google.com"); console.log(await browser.getTitle()); - // выведет: "WebdriverIO · Next-gen browser and mobile automation test framework for Node.js" + // outputs: "WebdriverIO · Next-gen browser and mobile automation test framework for Node.js" }); ``` -## Связанные команды {#related} +## Related Commands {#related} - [mockClearAll](../mockClearAll) - [mockRestoreAll](../mockRestoreAll) +## References + +We'd like to give credit to the original WebdriverIO docs [article](https://webdriver.io/docs/api/browser/mock), from which we drew some information while writing our version. + [how-to-use-cdp]: ../../../guides/how-to-use-cdp [how-to-intercept-requests-and-responses]: ../../../guides/how-to-intercept-requests-and-responses diff --git a/docs/commands/browser/mockClearAll.mdx b/docs/commands/browser/mockClearAll.mdx index 2fb1953..38d11d7 100644 --- a/docs/commands/browser/mockClearAll.mdx +++ b/docs/commands/browser/mockClearAll.mdx @@ -1,16 +1,16 @@ # mockClearAll -## Обзор {#overview} +## Overview {#overview} -Используйте команду `mockClearAll`, чтобы сбросить всю сохраненную информацию в зарегистрированных имитациях. Имитации регистрируются с помощью команды [mock][mock]. +Use the `mockClearAll` command to reset all stored information in registered mocks. Mocks are registered using the [mock][mock] command. -## Использование {#usage} +## Usage {#usage} ```typescript await browser.mockClearAll(); ``` -## Примеры использования {#examples} +## Usage Examples {#examples} ```typescript it("should clear all mocks", async ({ browser }) => { @@ -32,9 +32,13 @@ it("should clear all mocks", async ({ browser }) => { }); ``` -## Связанные команды {#related} +## Related Commands {#related} - [mock][mock] - [mockRestoreAll](../mockRestoreAll) +## References + +We'd like to give credit to the original WebdriverIO docs [article](https://webdriver.io/docs/api/browser/mockClearAll), from which we drew some information while writing our version. + [mock]: ../mock diff --git a/docs/commands/browser/mockRestoreAll.mdx b/docs/commands/browser/mockRestoreAll.mdx index 4f38185..acbac54 100644 --- a/docs/commands/browser/mockRestoreAll.mdx +++ b/docs/commands/browser/mockRestoreAll.mdx @@ -1,16 +1,16 @@ # mockRestoreAll -## Обзор {#overview} +## Overview {#overview} -Используйте команду `mockRestoreAll`, чтобы восстановить информацию и поведение в зарегистрированных имитациях до их создания. Имитации регистрируются с помощью команды [mock][mock]. +Use the `mockRestoreAll` command to restore the information and behavior in registered mocks to their original state. Mocks are registered using the [mock][mock] command. -## Использование {#usage} +## Usage {#usage} ```typescript await browser.mockRestoreAll(); ``` -## Примеры использования {#examples} +## Usage Examples {#examples} ```typescript it("should restore all mocks", async ({ browser }) => { @@ -29,9 +29,13 @@ it("should restore all mocks", async ({ browser }) => { }); ``` -## Связанные команды {#related} +## Related Commands {#related} - [mock][mock] - [mockClearAll](../mockClearAll) +## References + +We'd like to give credit to the original WebdriverIO docs [article](https://webdriver.io/docs/api/browser/mockRestoreAll), from which we drew some information while writing our version. + [mock]: ../mock diff --git a/docs/commands/browser/newWindow.mdx b/docs/commands/browser/newWindow.mdx index 99ecbd7..6ed24f0 100644 --- a/docs/commands/browser/newWindow.mdx +++ b/docs/commands/browser/newWindow.mdx @@ -2,19 +2,21 @@ import Admonition from "@theme/Admonition"; # newWindow -## Обзор {#overview} +## Overview {#overview} -Используйте команду `newWindow`, чтобы открыть новое окно в браузере. +Use the `newWindow` command to open a new window in the browser. -Эта команда эквивалентна функции [window.open()][window-open]. +This command is equivalent to the [window.open()][window-open] function. -Обратите внимание, что при выполнении эта команда автоматически переключит вас в новое окно. +Note that this command will automatically switch you to the new window upon execution. -Команда _newWindow_ не работает в мобильных окружениях (!) + + The _newWindow_ command does not work in mobile environments (!) + - Команда может не работать c _devtools_ протоколом. Также она не дожидается загрузки страницы. - Чтобы решить эти проблемы, рекомендуется перезаписать команду (на стороне Testplane это будет сделано в версии 9.0.0): + The command might not work with _devtools_ protocol. It also does not wait untill page load. + In order to fix these problems, it is recommended to overwrite the command (on the Testplane side it would be done in version 9.0.0): ```javascript browser.overwriteCommand("newWindow", async function(pageUrl, windowName, windowFeatures) { if (browser.isDevTools) { @@ -30,33 +32,33 @@ import Admonition from "@theme/Admonition"; -## Использование {#usage} +## Usage {#usage} ```javascript await browser.newWindow(url, { windowName, windowFeatures }); ``` -## Параметры команды {#parameters} +## Command Parameters {#parameters} - + - - - + + +
**Имя****Тип****Описание**
**Name****Type****Description**
urlStringURL веб-сайта, который нужно открыть.
windowNameStringИмя нового окна.
windowFeaturesStringНастройки открываемого окна, например: _size_, _position_, _scrollbars_, и т. д.
urlStringThe URL of the website to open.
windowNameStringThe name of the new window.
windowFeaturesStringSettings for the new window, such as size, position, scrollbars, etc.
-## Примеры использования {#examples} +## Usage Examples {#examples} ```javascript it("should open a new tab", async ({ browser }) => { await browser.url("http://google.com"); console.log(await browser.getTitle()); - // выведет: "Google" + // outputs: "Google" await browser.newWindow( "https://webdriver.io", @@ -64,12 +66,16 @@ it("should open a new tab", async ({ browser }) => { "width=420,height=230,resizable,scrollbars=yes,status=1", ); console.log(await browser.getTitle()); - // выведет: "WebdriverIO · Next-gen browser and mobile automation test framework for Node.js" + // outputs: "WebdriverIO · Next-gen browser and mobile automation test framework for Node.js" await browser.closeWindow(); console.log(await browser.getTitle()); - // выведет: "Google" + // outputs: "Google" }); ``` +## References + +We'd like to give credit to the original WebdriverIO docs [article](https://webdriver.io/docs/api/browser/newWindow), from which we drew some information while writing our version. + [window-open]: https://developer.mozilla.org/en-US/docs/Web/API/Window/open diff --git a/docs/commands/browser/openAndWait.mdx b/docs/commands/browser/openAndWait.mdx index 671a78c..a99418a 100644 --- a/docs/commands/browser/openAndWait.mdx +++ b/docs/commands/browser/openAndWait.mdx @@ -1,12 +1,12 @@ # openAndWait -## Обзор {#overview} +## Overview {#overview} -Используйте команду `openAndWait` для открытия страницы и ожидания ее загрузки (по комбинации указанных факторов). +Use the `openAndWait` command to open a page and wait for it to load (based on a combination of specified factors). -Функции ожидания неактивности сети и падения по сетевым ошибкам доступны только при использовании браузеров с поддержкой _Chrome DevTools Protocol (CDP)_. +Functions for waiting for network idle and failing on network errors are only available when using browsers that support _Chrome DevTools Protocol (CDP)_. -## Использование {#usage} +## Usage {#usage} ```javascript await browser.openAndWait("some/url", { @@ -20,15 +20,15 @@ await browser.openAndWait("some/url", { }); ``` -## Параметры команды {#parameters} +## Command Parameters {#parameters} - + - - + +
**Имя****Тип****Описание**
**Name****Type****Description**
urlStringАдрес страницы.
WaitOptsObjectПараметры ожидания страницы. Опционален, как и все его поля.
urlStringThe page URL.
WaitOptsObjectPage waiting parameters. Optional, as are all its fields.
@@ -37,26 +37,26 @@ await browser.openAndWait("some/url", { - + - - - - - - - - + + + + + + + +
**Имя****Тип****Описание**
**Name****Type****Description**
selectorString\|String[]Селектор (/селекторы) элемента (/элементов), которые должны существовать на загруженной странице.
predicate() => Promise<bool> \| boolПредикат, возвращающий `true`, если страница загружена. Выполняется в браузерном контексте: [waitUntil](https://webdriver.io/docs/api/element/waitUntil).
waitNetworkIdleBooleanЕсли `true`, ожидает окончания выполнения всех сетевых запросов. По умолчанию `true`. Работает только в CDP браузерах, игнорируется для остальных.
waitNetworkIdleTimeoutNumberВремя (в миллисекундах) после окончания всех сетевых запросов, чтобы считать сеть простаивающей. По умолчанию 500.
failOnNetworkErrorBooleanНужно ли бросать ошибку при сетевых ошибках. По умолчанию `true`. Работает только в CDP браузерах, игнорируется для остальных
shouldThrowError(match) => BooleanПредикат, который должен вернуть `true` по [Match](https://webdriver.io/docs/api/mock#match), если сетевая ошибка считается критической для корректной загрузки страницы. По умолчанию, возвращает `true` для картинок, стилей и шрифтов.
ignoreNetworkErrorsPatternsArray<String \| RegExp>Паттерны адресов ресурсов, для которых игнорируется проверка успешности загрузки. Имеет приоритет над `shouldThrowError`.
timeoutNumberТаймаут открытия страницы. По умолчанию, используется значение `pageLoadTimeout`. Выбрасывается исключение, если по истечени времени селекторы все еще не существуют, или предикат все еще резолвит `false`
selectorString\|String[]Selector(s) of element(s) that must exist on the loaded page.
predicate() => Promise<bool> \| boolPredicate that returns `true` if the page is loaded. Executed in the browser context: [waitUntil](https://webdriver.io/docs/api/element/waitUntil).
waitNetworkIdleBooleanIf `true`, waits for the completion of all network requests. Default is `true`. Only works in CDP browsers; ignored for others.
waitNetworkIdleTimeoutNumberTime (in milliseconds) after the completion of all network requests to consider the network idle. Default is 500.
failOnNetworkErrorBooleanWhether to throw an error on network errors. Default is `true`. Only works in CDP browsers; ignored for others.
shouldThrowError(match) => BooleanPredicate that should return `true` by [Match](https://webdriver.io/docs/api/mock#match) if the network error is considered critical for proper page loading. By default, returns `true` for images, styles, and fonts.
ignoreNetworkErrorsPatternsArray<String \| RegExp>Patterns of resource URLs for which load success checks are ignored. Takes precedence over `shouldThrowError`.
timeoutNumberPage load timeout. By default, the `pageLoadTimeout` value is used. An exception is thrown if selectors still do not exist or the predicate still resolves to `false` after the time has elapsed.
-## Примеры использования {#examples} +## Usage Examples {#examples} ```javascript it("some test", async ({ browser }) => { - // С `waitNetworkIdle` также ожидаем загрузки картинок, шрифтов, стилей, игнорируя ошибки метрики + // With `waitNetworkIdle` also wait for loading images, fonts, styles, ignoring metric errors await browser.openAndWait("some/url", { selector: [".selector"], predicate: () => document.isReady, diff --git a/docs/commands/browser/overwriteCommand.mdx b/docs/commands/browser/overwriteCommand.mdx index ac94f46..4ee162f 100644 --- a/docs/commands/browser/overwriteCommand.mdx +++ b/docs/commands/browser/overwriteCommand.mdx @@ -2,38 +2,38 @@ import Admonition from "@theme/Admonition"; # overwriteCommand -## Обзор {#overview} +## Overview {#overview} -Используйте команду `overwriteCommand`, чтобы переопределить уже существующие команды браузера _(browser)_ или элемента _(element)_. +Use the `overwriteCommand` command to override existing commands of the browser or an element. - Читайте также рецепт «[Как добавить свои команды][how-to-add-custom-commands]». + Also see the recipe "[How to add custom commands][how-to-add-custom-commands]". -## Использование {#usage} +## Usage {#usage} ```javascript await browser.overwriteCommand(name, callback, elementScope); ``` -## Параметры команды {#parameters} +## Command Parameters {#parameters} - + - - - + + +
**Имя****Тип****Описание**
**Name****Type****Description**
nameStringИмя кастомной команды.
callbackFunctionФункция-реализация команды.
elementScopeBooleanЕсли значение _true_, то добавить команду к элементу, а не к браузеру. По умолчанию: _false_.
nameStringThe name of the custom command.
callbackFunctionThe function implementation of the command.
elementScopeBooleanIf the value is _true_, add the command to the element instead of the browser. Default: _false_.
-## Примеры использования {#examples} +## Usage Examples {#examples} ```javascript -// вывести время паузы в мс перед самой паузой и вернуть потом это значение +// log the pause duration in ms before the pause and then return the value await browser.overwriteCommand("pause", function (origPauseFunction, ms) { console.log(`Sleeping for ${ms}`); @@ -42,16 +42,20 @@ await browser.overwriteCommand("pause", function (origPauseFunction, ms) { return ms; }); -// используем переопределенную команду паузы +// use the overwritten pause command it("should use my overwrite command", async ({ browser }) => { await browser.url("https://webdriver.io"); - await browser.pause(1000); // выведет: "Sleeping for 1000" + await browser.pause(1000); // outputs: "Sleeping for 1000" }); ``` -## Связанные команды {#related} +## Related Commands {#related} - [addCommand](../addCommand) +## References + +We'd like to give credit to the original WebdriverIO docs [article](https://webdriver.io/docs/api/browser/overwriteCommand), from which we drew some information while writing our version. + [how-to-add-custom-commands]: https://webdriver.io/docs/customcommands/#adding-custom-commands diff --git a/docs/commands/browser/pause.mdx b/docs/commands/browser/pause.mdx index 93ec86f..1dcbc36 100644 --- a/docs/commands/browser/pause.mdx +++ b/docs/commands/browser/pause.mdx @@ -2,35 +2,35 @@ import Admonition from "@theme/Admonition"; # pause -## Обзор {#overview} +## Overview {#overview} -Используйте команду `pause`, чтобы приостановить выполнение теста на заданный промежуток времени. +Use the `pause` command to halt the execution of the test for a specified period of time. - Не рекомендуется использовать эту команду для ожидания отображения элемента. Чтобы избежать - ложных результатов тестирования, лучше использовать такие команды, как - [waitForExist][wait-for-exist] или другие команды _waitFor*_. + It is not recommended to use this command for waiting for an element to appear. To avoid false + test results, it's better to use commands like [waitForExist][wait-for-exist] or other + _waitFor*_ commands. -## Использование {#usage} +## Usage {#usage} ```javascript await browser.pause(milliseconds); ``` -## Параметры команды {#parameters} +## Command Parameters {#parameters} - + - +
**Имя****Тип****Описание**
**Name****Type****Description**
millisecondsNumberВремя в миллисекундах.
millisecondsNumberTime in milliseconds.
-## Примеры использования {#examples} +## Usage Examples {#examples} ```javascript it("should pause the execution", async ({ browser }) => { @@ -38,8 +38,12 @@ it("should pause the execution", async ({ browser }) => { await browser.pause(3000); const endtime = new Date().getTime(); - console.log(endtime - starttime); // выведет: 3000 + console.log(endtime - starttime); // outputs: 3000 }); ``` +## References + +We'd like to give credit to the original WebdriverIO docs [article](https://webdriver.io/docs/api/browser/pause), from which we drew some information while writing our version. + [wait-for-exist]: ../../element/waitForExist diff --git a/docs/commands/browser/reactDollar.mdx b/docs/commands/browser/reactDollar.mdx index 22f1014..d92be12 100644 --- a/docs/commands/browser/reactDollar.mdx +++ b/docs/commands/browser/reactDollar.mdx @@ -2,38 +2,38 @@ import Admonition from "@theme/Admonition"; # react$ -## Обзор {#overview} +## Overview {#overview} -Используйте команду `react$`, чтобы найти на странице React-компоненты по их настоящему имени, одновременно фильтруя их по props'ам и состоянию. +Use the `react$` command to find React components on the page by their actual name, while filtering them by props and state. -Команда _react$_ работает только в приложениях, которые используют _React v16.x._ +The _react$_ command only works in applications that use _React v16.x._ -Читайте больше о React-селекторах в рецепте «[Как использовать селекторы][how-to-use-selectors]». +Read more about React selectors in the recipe "[How to use selectors][how-to-use-selectors]". -## Использование {#usage} +## Usage {#usage} ```javascript await browser.react$(reactComponentSelector, { props, state }); ``` -## Параметры команды {#parameters} +## Command Parameters {#parameters} - + - - - + + +
**Имя****Тип****Описание**
**Name****Type****Description**
reactComponentSelectorStringСелектор React-компонента.
propsObjectReact-свойства, которые должен иметь компонент.
stateAny или Any[]React-состояние, в котором должен находиться компонент.
reactComponentSelectorStringThe React component selector.
propsObjectReact properties the component should have.
stateAny or Any[]React state the component should be in.
-## Примеры использования {#examples} +## Usage Examples {#examples} ```javascript it("should calculate 7 * 6", async ({ browser }) => { @@ -63,14 +63,18 @@ it("should calculate 7 * 6", async ({ browser }) => { }) .click(); - console.log(await browser.$(".component-display").getText()); // выведет: "42" + console.log(await browser.$(".component-display").getText()); // outputs: "42" }); ``` -## Связанные команды {#related} +## Related Commands {#related} - [browser.react$$](../reactDollarDollar) - [element.react$](../../element/reactDollar) - [element.react$$](../../element/reactDollarDollar) +## References + +We'd like to give credit to the original WebdriverIO docs [article](https://webdriver.io/docs/api/browser/react$), from which we drew some information while writing our version. + [how-to-use-selectors]: https://webdriver.io/docs/selectors diff --git a/docs/commands/browser/reactDollarDollar.mdx b/docs/commands/browser/reactDollarDollar.mdx index b05c1e7..a97b712 100644 --- a/docs/commands/browser/reactDollarDollar.mdx +++ b/docs/commands/browser/reactDollarDollar.mdx @@ -2,38 +2,38 @@ import Admonition from "@theme/Admonition"; # react$$ -## Обзор {#overview} +## Overview {#overview} -Используйте команду `react$$`, чтобы найти на странице множество React-компонентов по их настоящему имени, одновременно фильтруя их по props'ам и состоянию. +Use the `react$$` command to find multiple React components on the page by their actual name, while filtering them by props and state. -Команда _react$_ работает только в приложениях, которые используют _React v16.x._ +The _react$_ command only works in applications that use _React v16.x._ -Читайте больше о React-селекторах в рецепте «[Как использовать селекторы][how-to-use-selectors]». +Read more about React selectors in the recipe "[How to use selectors][how-to-use-selectors]". -## Использование {#usage} +## Usage {#usage} ```javascript await browser.react$$(reactComponentSelector, { props, state }); ``` -## Параметры команды {#parameters} +## Command Parameters {#parameters} - + - - - + + +
**Имя****Тип****Описание**
**Name****Type****Description**
reactComponentSelectorStringСелектор React-компонента.
propsObjectReact-свойства, которые должен иметь компонент.
stateAny или Any[]React-состояние, в котором должен находиться компонент.
reactComponentSelectorStringThe React component selector.
propsObjectReact properties the component should have.
stateAny or Any[]React state the component should be in.
-## Примеры использования {#examples} +## Usage Examples {#examples} ```javascript it("should calculate 7 * 6", async ({ browser }) => { @@ -44,14 +44,18 @@ it("should calculate 7 * 6", async ({ browser }) => { }); console.log(await Promise.all(orangeButtons.map(btn => btn.getText()))); - // выведет: "[ '÷', 'x', '-', '+', '=' ]" + // outputs: "[ '÷', 'x', '-', '+', '=' ]" }); ``` -## Связанные команды {#related} +## Related Commands {#related} - [browser.react$](../reactDollar) - [element.react$](../../element/reactDollar) - [element.react$$](../../element/reactDollarDollar) +## References + +We'd like to give credit to the original WebdriverIO docs [article](https://webdriver.io/docs/api/browser/react$$), from which we drew some information while writing our version. + [how-to-use-selectors]: https://webdriver.io/docs/selectors diff --git a/docs/commands/browser/reloadSession.mdx b/docs/commands/browser/reloadSession.mdx index 4b1e2ef..a089b60 100644 --- a/docs/commands/browser/reloadSession.mdx +++ b/docs/commands/browser/reloadSession.mdx @@ -1,25 +1,29 @@ # reloadSession -## Обзор {#overview} +## Overview {#overview} -Используйте команду `reloadSession`, чтобы создать новую Selenium-сессию с текущими _capabilities_. +Use the `reloadSession` command to create a new Selenium session with the current capabilities. -Эта команда может пригодиться, если вы тестируете приложение с большим количеством состояний, и вам нужно очистить сессию браузера между отдельными тестами в одном файле, чтобы избежать создания сотен отдельных тестовых файлов с помощью WDIO. Однако будьте осторожны, эта команда сильно влияет на время тестирования, поскольку создание новых сессий Selenium отнимает много времени, особенно при использовании облачных сервисов. +This command can be useful if you are testing an application with many states and need to clear the browser session between individual tests in a single file, to avoid creating hundreds of separate test files with WDIO. However, be cautious, as this command significantly impacts testing time since creating new Selenium sessions is time-consuming, especially when using cloud services. -## Использование {#usage} +## Usage {#usage} ```javascript await browser.reloadSession(); ``` -## Примеры использования {#examples} +## Usage Examples {#examples} ```javascript it("should reload my session with current capabilities", async ({ browser }) => { - console.log(browser.sessionId); // выведет: e042b3f3cd5a479da4e171825e96e655 + console.log(browser.sessionId); // outputs: e042b3f3cd5a479da4e171825e96e655 await browser.reloadSession(); - console.log(browser.sessionId); // выведет: 9a0d9bf9d4864160aa982c50cf18a573 + console.log(browser.sessionId); // outputs: 9a0d9bf9d4864160aa982c50cf18a573 }); ``` + +## References + +We'd like to give credit to the original WebdriverIO docs [article](https://webdriver.io/docs/api/browser/reloadSession), from which we drew some information while writing our version. diff --git a/docs/commands/browser/runStep.mdx b/docs/commands/browser/runStep.mdx index 70a717e..8f02545 100644 --- a/docs/commands/browser/runStep.mdx +++ b/docs/commands/browser/runStep.mdx @@ -1,41 +1,41 @@ # runStep -## Обзор {#overview} +## Overview {#overview} -Используйте команду `runStep`, чтобы получить человекочитаемую историю выполнения теста, которая, в том числе, автоматически будет отображаться в [html-reporter][reporter]. -Шаги могут быть вложенными. +Use the `runStep` command to obtain a human-readable execution history of the test, which will automatically be displayed in the [html-reporter][reporter]. +Steps can be nested. -## Использование {#usage} +## Usage {#usage} ```typescript await browser.runStep(stepName, stepCb); ``` -## Параметры команды {#parameters} +## Command Parameters {#parameters} - - - + + + - + - +
**Имя****Тип****Описание****Name****Type****Description**
`stepName` `string`Название шага.Step name.
`stepCb` `() => Promise`Функция с набором команд, которые нужно объединить в единый шаг.A function with commands that need to be combined into a single step.
-## Примеры использования {#examples} +## Usage Examples {#examples} ```typescript it("test", async ({ browser }) => { @@ -52,7 +52,7 @@ it("test", async ({ browser }) => { }); ``` -Данный тест завершится с ошибкой "Cannot call click on element with selector 'not-exist-selector' because element wasn't found" из-за отсутствующего селектора и будет создана следующая история: +This test will fail with the error "Cannot call click on element with selector 'not-exist-selector' because element wasn't found" due to the missing selector and the following history will be generated: ``` - testplane: init browser @@ -64,9 +64,9 @@ it("test", async ({ browser }) => { - waitForExist ``` -В этом примере шаг `prepare page` свернут, т.к. он был выполнен успешно. +In this example step `some step name` is collapsed, because it is completed successfully. -Также, вы можете вернуть конкретное значение из шага. +You can also return values from step: ```typescript const parsedPage = await browser.runStep("parse page", async () => { diff --git a/docs/commands/browser/savePDF.mdx b/docs/commands/browser/savePDF.mdx index 4d3e351..882452d 100644 --- a/docs/commands/browser/savePDF.mdx +++ b/docs/commands/browser/savePDF.mdx @@ -1,10 +1,10 @@ # savePDF -## Обзор {#overview} +## Overview {#overview} -Используйте команду `savePDF`, чтобы сохранить в pdf-файл текущий контекст в браузере. +Use the `savePDF` command to save the current browser context to a PDF file. -## Использование {#usage} +## Usage {#usage} ```javascript await browser.savePDF(filepath, { @@ -22,30 +22,30 @@ await browser.savePDF(filepath, { }); ``` -## Параметры команды {#parameters} +## Command Parameters {#parameters} - + - - - - - - - - - - - - + + + + + + + + + + + +
**Имя****Тип****Описание**
**Name****Type****Description**
filepathStringПуть к pdf-файлу относительно каталога выполнения (расширение _.pdf_ — обязательно).
orientationStringОриентация pdf-страницы.
scaleNumberМасштаб pdf-страницы.
backgroundBooleanВключить фон pdf-страницы.
widthNumberШирина pdf-страницы.
heightNumberВысота pdf-страницы.
topNumberВерхний отступ pdf-страницы.
bottomNumberНижний отступ pdf-страницы.
leftNumberЛевый отступ pdf-страницы.
rightNumberПравый отступ pdf-страницы.
shrinkToFitNumberУменьшить страницу, чтобы она соответствовала размеру pdf-страницы.
pageRangesObject[]Диапазон страниц для включения в PDF.
filepathStringPath to the PDF file relative to the execution directory (the _.pdf_ extension is mandatory).
orientationStringOrientation of the PDF page.
scaleNumberScale of the PDF page.
backgroundBooleanInclude the background in the PDF.
widthNumberWidth of the PDF page.
heightNumberHeight of the PDF page.
topNumberTop margin of the PDF page.
bottomNumberBottom margin of the PDF page.
leftNumberLeft margin of the PDF page.
rightNumberRight margin of the PDF page.
shrinkToFitNumberShrink the page to fit the PDF page size.
pageRangesObject[]Range of pages to include in the PDF.
-## Примеры использования {#examples} +## Usage Examples {#examples} ```javascript it("should save a PDF screenshot of the browser view", async ({ browser }) => { @@ -53,7 +53,11 @@ it("should save a PDF screenshot of the browser view", async ({ browser }) => { }); ``` -## Связанные команды {#related} +## Related Commands {#related} - [saveRecordingScreen](../saveRecordingScreen) - [saveScreenshot](../saveScreenshot) + +## References + +We'd like to give credit to the original WebdriverIO docs [article](https://webdriver.io/docs/api/browser/savePDF), from which we drew some information while writing our version. diff --git a/docs/commands/browser/saveRecordingScreen.mdx b/docs/commands/browser/saveRecordingScreen.mdx index 2714758..bd65754 100644 --- a/docs/commands/browser/saveRecordingScreen.mdx +++ b/docs/commands/browser/saveRecordingScreen.mdx @@ -2,34 +2,34 @@ import Admonition from "@theme/Admonition"; # saveRecordingScreen -## Обзор {#overview} +## Overview {#overview} -Используйте команду `saveRecordingScreen`, чтобы сохранить в файл видео, съемка которого была начата командой [startRecordingScreen][start-recording-screen]. +Use the `saveRecordingScreen` command to save a video to a file that was started with the [startRecordingScreen][start-recording-screen] command. - Команда _saveRecordingScreen_ поддерживается только для мобильных сессий, которые используют + The _saveRecordingScreen_ command is only supported for mobile sessions that use [Appium][appium]. -## Использование {#usage} +## Usage {#usage} ```javascript await browser.saveRecordingScreen(filepath); ``` -## Параметры команды {#parameters} +## Command Parameters {#parameters} - + - +
**Имя****Тип****Описание**
**Name****Type****Description**
filepathStringПолный или относительный к исполняемому каталогу путь к видео.
filepathStringFull or relative path to the video file from the execution directory.
-## Примеры использования {#examples} +## Usage Examples {#examples} ```javascript it("should save a video", async ({ browser }) => { @@ -39,10 +39,14 @@ it("should save a video", async ({ browser }) => { }); ``` -## Связанные команды {#related} +## Related Commands {#related} - [savePDF](../savePDF) - [saveScreenshot](../saveScreenshot) +## References + +We'd like to give credit to the original WebdriverIO docs [article](https://webdriver.io/docs/api/browser/saveRecordingScreen), from which we drew some information while writing our version. + [start-recording-screen]: https://webdriver.io/docs/api/appium/#startrecordingscreen [appium]: http://appium.io/docs/en/commands/device/recording-screen/start-recording-screen/ diff --git a/docs/commands/browser/saveScreenshot.mdx b/docs/commands/browser/saveScreenshot.mdx index 537c26a..144db5a 100644 --- a/docs/commands/browser/saveScreenshot.mdx +++ b/docs/commands/browser/saveScreenshot.mdx @@ -1,30 +1,30 @@ # saveScreenshot -## Обзор {#overview} +## Overview {#overview} -Используйте команду `saveScreenshot`, чтобы сохранить скриншот текущего контекста в браузере в png-файл. +Use the `saveScreenshot` command to save a screenshot of the current browser context to a PNG file. -Имейте в виду, что некоторые драйверы браузеров делают скриншоты всего документа (например, драйвер [Gecko][gecko] для Firefox), тогда как другие — только текущего окна просмотра (например, [Chromedriver][chromedriver] для Chrome). +Keep in mind that some browser drivers capture screenshots of the entire document (e.g., the [Gecko driver][gecko] for Firefox), while others capture only the current viewport (e.g., [Chromedriver][chromedriver] for Chrome). -## Использование {#usage} +## Usage {#usage} ```javascript await browser.saveScreenshot(filepath); ``` -## Параметры команды {#parameters} +## Command Parameters {#parameters} - + - +
**Имя****Тип****Описание**
**Name****Type****Description**
filepathStringПуть к скриншоту относительно каталога выполнения (расширение _.png_ — обязательно).
filepathStringThe path to the screenshot relative to the execution directory (the _.png_ extension is mandatory).
-## Примеры использования {#examples} +## Usage Examples {#examples} ```javascript it("should save a screenshot of the browser view", async ({ browser }) => { @@ -32,11 +32,15 @@ it("should save a screenshot of the browser view", async ({ browser }) => { }); ``` -## Связанные команды {#related} +## Related Commands {#related} - [browser.savePDF](../savePDF) - [browser.saveRecordingScreen](../saveRecordingScreen) - [element.saveScreenshot](../../element/saveScreenshot) +## References + +We'd like to give credit to the original WebdriverIO docs [article](https://webdriver.io/docs/api/browser/saveScreenshot), from which we drew some information while writing our version. + [gecko]: https://github.com/mozilla/geckodriver [chromedriver]: https://chromedriver.chromium.org/ diff --git a/docs/commands/browser/scroll.mdx b/docs/commands/browser/scroll.mdx index 13cf0bb..768ff11 100644 --- a/docs/commands/browser/scroll.mdx +++ b/docs/commands/browser/scroll.mdx @@ -1,29 +1,29 @@ # scroll -## Обзор {#overview} +## Overview {#overview} -Используйте команду `scroll`, чтобы проскроллить вьюпорт браузера. Обратите внимание, что координаты `x` и `y` относятся к текущей позиции прокрутки вьюпорта. +Use the `scroll` command to scroll the browser viewport. Note that the `x` and `y` coordinates refer to the current scrolling position of the viewport. -## Использование {#usage} +## Usage {#usage} ```typescript await browser.scroll(x, y); ``` -## Параметры команды {#parameters} +## Command Parameters {#parameters} - + - - + +
**Имя****Тип****Описание**
**Name****Type****Description**
xNumberНеобязательный параметр. Координата x, куда нужно проскроллить. По умолчанию: _0_.
yNumberНеобязательный параметр. Координата y, куда нужно проскроллить. По умолчанию: _0_.
xNumberOptional parameter. The x-coordinate to scroll to. Default: _0_.
yNumberOptional parameter. The y-coordinate to scroll to. Default: _0_.
-## Примеры использования {#examples} +## Usage Examples {#examples} ```typescript it("should demonstrate the scroll command", async ({ browser }) => { @@ -35,6 +35,10 @@ it("should demonstrate the scroll command", async ({ browser }) => { }); ``` -## Связанные команды {#related} +## Related Commands {#related} - [element.scrollIntoView](../../element/scrollIntoView) + +## References + +We'd like to give credit to the original WebdriverIO docs [article](https://webdriver.io/docs/api/browser/scroll), from which we drew some information while writing our version. diff --git a/docs/commands/browser/setCookies.mdx b/docs/commands/browser/setCookies.mdx index 652b169..07a0e01 100644 --- a/docs/commands/browser/setCookies.mdx +++ b/docs/commands/browser/setCookies.mdx @@ -1,73 +1,73 @@ # setCookies -## Обзор {#overview} +## Overview {#overview} -Используйте команду `setCookies`, чтобы установить _cookies_ на текущей странице. +Use the `setCookies` command to set cookies on the current page. -Убедитесь, что вы находитесь именно на той странице, для которой вы хотите установить _cookies_. Вы не можете установить _cookies_ для произвольной страницы, не находясь при этом на ней. +Make sure you are on the page for which you want to set the cookies. You cannot set cookies for an arbitrary page without being on it. -## Использование {#usage} +## Usage {#usage} ```javascript await browser.setCookies(cookies); ``` -## Параметры команды {#parameters} +## Command Parameters {#parameters} - + - +
**Имя****Тип****Описание**
**Name****Type****Description**
cookiesWebDriver.Cookie или WebDriver.Cookie[]Объект _cookie_ или массив объектов _cookie_.
cookiesWebDriver.Cookie or WebDriver.Cookie[]A cookie object or an array of cookie objects.
-### Параметры объекта WebDriver.Cookie +### WebDriver.Cookie Object Parameters - + - - - - - - - - + + + + + + + +
**Имя****Тип****По умолчанию****Описание**
**Name****Type****Default****Description**
nameString_N/A_Имя _cookie_.
valueString_N/A_Значение _cookie_.
pathString"/"Путь к _cookie_.
domainString_см. описание_Домен, для которого будет видна _cookie_. Если домен не указан, то подразумевается домен урла активного документа в текущем контексте браузера.
secureBooleanfalseПризнак безопасной _cookie_.
httpOnlyBooleanfalseПризнак _cookie_ только для _http_.
expiryNumber_не устанавливается_Срок годности _cookie_ в секундах от начала эпохи Unix.
sameSiteString"None"Признак подчинения _cookie_ политике [SameSite][same-site]. Допустимые значения: _"Lax"_ или _"Strict"_.
nameString_N/A_The name of the cookie.
valueString_N/A_The value of the cookie.
pathString"/"The path of the cookie.
domainString_see description_The domain the cookie is visible to. If omitted, defaults to the domain of the current document's URL in the browser context.
secureBooleanfalseThe secure flag of the cookie.
httpOnlyBooleanfalseThe HTTP-only flag of the cookie.
expiryNumber_not set_The expiry date of the cookie as the number of seconds since the Unix epoch.
sameSiteString"None"The SameSite attribute of the cookie. Valid values are _"Lax"_ or _"Strict"_.
-## Примеры использования {#examples} +## Usage Examples {#examples} ```javascript it("should set a cookie for the page", async ({ browser }) => { await browser.url("/"); - // устанавливаем одну cookie + // set a single cookie await browser.setCookies({ name: "test1", value: "one", - // Следующие параметры опциональны: - // путь к cookie, по умолчанию: "/" + // Optional parameters: + // cookie path, defaults to "/" // path: '/foo', - // домен, для которого будет видна cookie - // по умолчанию: домен урла активного документа в текущем контексте браузера + // domain the cookie is visible to + // defaults to domain of the current document's URL in the browser context // domain: '.example.com', - // признак, что это безопасная cookie, по умолчанию: false + // secure cookie flag, defaults to false // secure: true, - // признак, что это cookie только для http, по умолчанию: false + // HTTP-only cookie flag, defaults to false // httpOnly: true, - // срок, когда cookie истекает, указывается в секундах с начала эпохи Unix + // expiry date of the cookie in seconds since the Unix epoch // expiry: 1551393875 }); - // устанавливаем несколько cookies + // set multiple cookies await browser.setCookies([ { name: "test2", value: "two" }, { name: "test3", value: "three" }, @@ -76,7 +76,7 @@ it("should set a cookie for the page", async ({ browser }) => { const cookies = await browser.getCookies(); await console.log(cookies); - // выведет: + // outputs: // [ // { name: 'test1', value: 'one', domain: 'www.example.com' }, // { name: 'test2', value: 'two', domain: 'www.example.com' }, @@ -85,9 +85,13 @@ it("should set a cookie for the page", async ({ browser }) => { }); ``` -## Связанные команды {#related} +## Related Commands {#related} - [getCookies](../getCookies) - [deleteCookies](../deleteCookies) +## References + +We'd like to give credit to the original WebdriverIO docs [article](https://webdriver.io/docs/api/browser/setCookies), from which we drew some information while writing our version. + [same-site]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite diff --git a/docs/commands/browser/setMeta.mdx b/docs/commands/browser/setMeta.mdx index e13d3f2..3ea4575 100644 --- a/docs/commands/browser/setMeta.mdx +++ b/docs/commands/browser/setMeta.mdx @@ -2,36 +2,37 @@ import Admonition from "@theme/Admonition"; # setMeta -## Обзор +## Overview -Используйте команду `setMeta`, чтобы записать значение под заданным ключом в мета-информацию теста. +Use the `setMeta` command to write a value under a specified key in the test's metadata. -Для чтения мета-информации используйте команду [getMeta](../getMeta). +To read the metadata, use the [getMeta](../getMeta) command. - Эта команда реализована внутри testplane, в [API WebDriverIO][webdriverio-api] её нет. + This command is implemented within Testplane and is not available in the [API + WebDriverIO][webdriverio-api]. -## Использование {#usage} +## Usage {#usage} ```javascript await browser.setMeta(key, value); ``` -## Параметры команды {#parameters} +## Command Parameters {#parameters} - + - - + +
**Имя****Тип****Описание**
**Name****Type****Description**
keyStringКлюч, значение для которого нужно записать в мета-информацию теста.
valueStringЗначение, которое нужно сохранить в мета-информации теста.
keyStringThe key whose value needs to be written in the test's metadata.
valueStringThe value to be saved in the test's metadata.
-## Примеры использования {#examples} +## Usage Examples {#examples} ```javascript it("should get meta info of test", async ({ browser }) => { @@ -39,17 +40,17 @@ it("should get meta info of test", async ({ browser }) => { await browser.url("/foo/bar?baz=qux"); const val = await browser.getMeta("foo"); - console.log(val); // выведет: bar + console.log(val); // outputs: bar const url = await browser.getMeta("url"); - console.log(url); // выведет: /foo/bar?baz=qux + console.log(url); // outputs: /foo/bar?baz=qux const meta = await browser.getMeta(); - console.log(meta); // выведет: {foo: 'bar', url: '/foo/bar?baz=qux'} + console.log(meta); // outputs: {foo: 'bar', url: '/foo/bar?baz=qux'} }); ``` -## Связанные команды {#related} +## Related Commands {#related} - [getMeta](../getMeta) diff --git a/docs/commands/browser/setOrientation.mdx b/docs/commands/browser/setOrientation.mdx index d2d762f..ff1353a 100644 --- a/docs/commands/browser/setOrientation.mdx +++ b/docs/commands/browser/setOrientation.mdx @@ -1,36 +1,39 @@ # setOrientation -## Обзор {#overview} +## Overview {#overview} -Используйте команду `setOrientation`, чтобы изменить ориентацию браузера. Эта команда гарантирует, что последующие команды не начнут выполнение раньше, чем произойдет смена ориентации. -Если устройство не поддерживает такую возможность, то команда будет проигнорирована. +Use the `setOrientation` command to change the browser orientation. This command ensures that subsequent commands will not start executing until the orientation change occurs. +If the device does not support this feature, the command will be ignored. -## Использование {#usage} +## Usage {#usage} ```typescript await browser.setOrientation(orientation); ``` -## Параметры команды {#parameters} +## Command Parameters {#parameters} - - - + + + - +
**Имя****Тип****Описание****Name****Type****Description**
`orientation` `"landscape" | "portrait"`The orientation to set. + The path to the screenshot relative to the execution directory (the _.png_ extension + is mandatory). +
-## Примеры использования {#examples} +## Usage Examples {#examples} ```typescript it("test", async ({ browser }) => { diff --git a/docs/commands/browser/setTimeout.mdx b/docs/commands/browser/setTimeout.mdx index 41c201b..e7d08a0 100644 --- a/docs/commands/browser/setTimeout.mdx +++ b/docs/commands/browser/setTimeout.mdx @@ -1,30 +1,30 @@ # setTimeout -## Обзор {#overview} +## Overview {#overview} -Используйте команду `setTimeout`, чтобы настроить таймауты для поиска элемента на странице, ожидания загрузки документа и выполнения скриптов через команды [execute][execute] или [executeAsync][execute-async]. +Use the `setTimeout` command to set timeouts for element searches on the page, document load waits, and script executions through the [execute][execute] or [executeAsync][execute-async] commands. -## Использование {#usage} +## Usage {#usage} ```javascript await browser.setTimeout({ implicit, pageLoad, script }); ``` -## Параметры команды {#parameters} +## Command Parameters {#parameters} - + - - - + + +
**Имя****Тип****Описание**
**Name****Type****Description**
implicitNumberВремя в миллисекундах для повторной попытки определения местоположения элемента при поиске элемента.
pageLoadNumberВремя ожидания загрузки документа, в миллисекундах.
scriptNumberТаймаут для скриптов, запущенных с помощью [execute][execute] или [executeAsync][execute-async]. Задается в миллисекундах.
implicitNumberTime in milliseconds for retrying element location when searching for an element.
pageLoadNumberTime to wait for the document to load, in milliseconds.
scriptNumberTimeout for scripts run using [execute][execute] or [executeAsync][execute-async], in milliseconds.
-## Примеры использования {#examples} +## Usage Examples {#examples} ```javascript it("should change timeout duration for session with long code duration", async ({ browser }) => { @@ -33,7 +33,7 @@ it("should change timeout duration for session with long code duration", async ( script: 60000, }); - // выполняем код, который занимает длительное время + // execute code that takes a long time await browser.executeAsync(done => { console.log("Wake me up before you go!"); setTimeout(done, 59000); @@ -41,5 +41,9 @@ it("should change timeout duration for session with long code duration", async ( }); ``` +## References + +We'd like to give credit to the original WebdriverIO docs [article](https://webdriver.io/docs/api/browser/setTimeout), from which we drew some information while writing our version. + [execute]: ../execute [execute-async]: ../executeAsync diff --git a/docs/commands/browser/setWindowSize.mdx b/docs/commands/browser/setWindowSize.mdx index 4a9119d..9144891 100644 --- a/docs/commands/browser/setWindowSize.mdx +++ b/docs/commands/browser/setWindowSize.mdx @@ -1,28 +1,32 @@ # setWindowSize -## Обзор {#overview} +## Overview {#overview} -Используйте команду `setWindowSize`, чтобы изменить внешний размер окна браузера в соответствии с заданными шириной и высотой. +Use the `setWindowSize` command to change the outer size of the browser window to the specified width and height. -## Использование {#usage} +## Usage {#usage} ```javascript await browser.setWindowSize(width, height); ``` -## Параметры команды {#parameters} +## Command Parameters {#parameters} - + - - + +
**Имя****Тип****Описание**
**Name****Type****Description**
widthNumberШирина окна браузера, которую нужно установить.
heightNumberВысота окна браузера, которую нужно установить.
widthNumberThe width of the browser window to set.
heightNumberThe height of the browser window to set.
-## Связанные команды {#related} +## Related Commands {#related} - [getWindowSize](../getWindowSize) + +## References + +We'd like to give credit to the original WebdriverIO docs [article](https://webdriver.io/docs/api/browser/setWindowSize), from which we drew some information while writing our version. diff --git a/docs/commands/browser/switchToRepl.mdx b/docs/commands/browser/switchToRepl.mdx index 5a4886f..5ac5890 100644 --- a/docs/commands/browser/switchToRepl.mdx +++ b/docs/commands/browser/switchToRepl.mdx @@ -2,44 +2,43 @@ import Admonition from "@theme/Admonition"; # switchToRepl -## Обзор {#overview} +## Overview {#overview} -Используйте команду `switchToRepl`, чтобы остановить выполнение теста и открыть интерактивный интерфейс REPL в терминале, в котором можно выполнять код построчно и наблюдать за результатом выполнения в реальном времени. -Этот режим позволяет удобно пошабого дебажить проблемные тесты как в локально установленном браузере, так и в удаленном гриде (например, с помощью [VNC][vnc]). +Use the `switchToRepl` command to stop the test execution and open an interactive `REPL` interface in the terminal where you can execute code line by line and observe the results in real-time. This mode allows for convenient debugging of problematic tests both in a locally installed browser and in a remote grid (for example, using [VNC][vnc]). -Для более удобного использования REPL-режима рекомендуется использовать [расширение для VS Code][extension]. +For more convenient use of the `REPL` mode, it is recommended to use the [VS Code extension][extension]. - - Данная команда доступна только при запуске `testplane` с опцией `--repl`. При запуске необходимо - явно указать тест и браузер, т.к. в REPL-режиме нельзя запускать сразу несколько тестов. - - -## Использование {#usage} +## Usage {#usage} ```typescript -await browser.switchToRepl(ctx); +await browser.runStep(stepName, stepCb); ``` -## Параметры команды {#parameters} +## Command Parameters {#parameters} - - - + + + + + + + + - +
**Имя****Тип****Описание****Name****Type****Description**
`stepName``string`Step name.
`context` `Record`Контекст с данными, которые будут доступны в интерактивном режиме.A context with data that will be available in the interactive console.
-## Примеры использования {#examples} +## Usage Examples {#examples} ```typescript it("test", async ({ browser }) => { @@ -51,17 +50,17 @@ it("test", async ({ browser }) => { }); ``` -При выполнении данного теста сначала будет выведен текст `before open repl` в консоль. Затем выполнение теста остановится, и в терминале откроется интерактивный интерфейс REPL, ожидающий ввода команд. -Например, можно выполнить следующую команду и сразу получить результат ее выполнения: +When executing this test, the text before open repl will first be printed to the console. Then, the test execution will stop, and an interactive `REPL` interface will open in the terminal, waiting for command input. +For example, you can execute the following command and immediately get the result of its execution: ```bash > await browser.getUrl(); about:blank ``` -После того, как вы закончите работу в REPL (например, нажатием `Cmd+D`), выполнение теста продолжится, и в консоли терминала будет выведен текст `after open repl`, а затем браузер закроется. +After you finish working in the `REPL` (for instance, by pressing `Cmd+D`), the test execution will continue, and the text after open repl will be printed in the terminal console, after which the browser will close. -Также, можно передать контекст в REPL, чтобы переменная была доступна в интерфейсе. Например: +You can also pass context to the REPL so that a variable is available in the interface. For example: ``` it("test", async ({browser}) => { @@ -71,7 +70,7 @@ it("test", async ({browser}) => { }); ``` -Т.к. мы передали в контекст переменную `counter`, то она будет доступна в терминале: +Since we passed the `counter` variable to the context, it will be available in the terminal: ```bash npx hermione --repl --grep "test" -b "chrome" diff --git a/docs/commands/browser/switchWindow.mdx b/docs/commands/browser/switchWindow.mdx index b7375e7..4eb9a90 100644 --- a/docs/commands/browser/switchWindow.mdx +++ b/docs/commands/browser/switchWindow.mdx @@ -1,41 +1,45 @@ # switchWindow -## Обзор {#overview} +## Overview {#overview} -Используйте команду `switchWindow`, чтобы перевести фокус на конкретную вкладку или конкретное окно. +Use the `switchWindow` command to focus on a specific tab or window. -## Использование {#usage} +## Usage {#usage} ```javascript await browser.switchWindow(urlOrTitleToMatch); ``` -## Параметры команды {#parameters} +## Command Parameters {#parameters} - + - +
**Имя****Тип****Описание**
**Name****Type****Description**
urlOrTitleToMatchString или RegExpСтрока или регулярное выражение, соответствующее заголовку или URL-адресу страницы.
urlOrTitleToMatchString or RegExpA string or regular expression matching the page's title or URL.
-## Примеры использования {#examples} +## Usage Examples {#examples} ```javascript it("should switch to another window", async ({ browser }) => { - // открываем url + // open URL await browser.url("https://google.com"); - // создаем новое окно + // create a new window await browser.newWindow("https://webdriver.io"); - // переключаемся назад через соответствие заданному урлу + // switch back by matching the URL await browser.switchWindow("google.com"); - // снова переключаемся через соответствие заданному заголовку страницы + // switch again by matching the page title await browser.switchWindow("Next-gen browser and mobile automation test framework for Node.js"); }); ``` + +## References + +We'd like to give credit to the original WebdriverIO docs [article](https://webdriver.io/docs/api/browser/switchWindow), from which we drew some information while writing our version. diff --git a/docs/commands/browser/throttle.mdx b/docs/commands/browser/throttle.mdx index 3487fc1..e512387 100644 --- a/docs/commands/browser/throttle.mdx +++ b/docs/commands/browser/throttle.mdx @@ -2,13 +2,13 @@ import Admonition from "@theme/Admonition"; # throttle -## Обзор {#overview} +## Overview {#overview} -Используйте команду `throttle`, чтобы эмулировать разные типы сетевого соединения у пользователя. +Use the `throttle` command to simulate different types of network connections for the user. -Эта команда позволяет промоделировать поведение сайта или веб-приложения при различной пропускной способности канала связи у пользователя. +This command allows you to model the behavior of a website or web application under various network bandwidth conditions. -Существует также множество пресетов с готовыми настройками конфигурации сети. Например: +There are also many presets with ready-made network configuration settings. For example: - offline | online - GPRS @@ -19,43 +19,43 @@ import Admonition from "@theme/Admonition"; - WiFi -Команда _throttle_ работает только при использовании _Chrome DevTools Protocol (CDP)_. +The _throttle_ command only works when using the _Chrome DevTools Protocol (CDP)_. -Читайте подробности в разделе «[Как использовать Chrome DevTools Protocol в testplane][how-to-use-cdp]». +Read more in the section "[How to use Chrome DevTools Protocol in testplane][how-to-use-cdp]". -А также читайте рецепт «[Как управлять пропускной способностью сети][how-to-manage-network-bandwidth]». +Also, see the recipe "[How to manage network bandwidth][how-to-manage-network-bandwidth]". -## Использование {#usage} +## Usage {#usage} ```javascript await browser.throttle({ offline, latency, downloadThroughput, uploadThroughput }); ``` -## Параметры команды {#parameters} +## Command Parameters {#parameters} - + - - - - + + + +
**Имя****Тип****Описание**
**Name****Type****Description**
offlineBooleanВключить эмуляцию потери соединения.
latencyNumberМинимальная задержка от отправленного запроса до полученных заголовков ответа, в миллисекундах.
downloadThroughputNumberМаксимальная совокупная пропускная способность загрузки (байт/сек). _-1_ отключает регулирование загрузки.
uploadThroughputNumberМаксимальная совокупная пропускная способность аплоада (байт/сек). _-1_ отключает регулирование аплоада.
offlineBooleanEnable emulation of a loss of connection.
latencyNumberMinimum latency from the sent request to received response headers, in milliseconds.
downloadThroughputNumberMaximum total download throughput (bytes/sec). _-1_ disables download throttling.
uploadThroughputNumberMaximum total upload throughput (bytes/sec). _-1_ disables upload throttling.
-## Примеры использования {#examples} +## Usage Examples {#examples} ```javascript it("should throttle the network", async ({ browser }) => { - // используем готовый пресет + // use a preset await browser.throttle("Regular 3G"); - // а здесь настраиваем конфигурацию сети сами + // configure the network settings manually await browser.throttle({ offline: false, downloadThroughput: (200 * 1024) / 8, @@ -65,5 +65,9 @@ it("should throttle the network", async ({ browser }) => { }); ``` +## References + +We'd like to give credit to the original WebdriverIO docs [article](https://webdriver.io/docs/api/browser/throttle), from which we drew some information while writing our version. + [how-to-use-cdp]: ../../../guides/how-to-use-cdp [how-to-manage-network-bandwidth]: ../../../guides/how-to-manage-network-bandwidth diff --git a/docs/commands/browser/touchAction.mdx b/docs/commands/browser/touchAction.mdx index a750383..fe5850f 100644 --- a/docs/commands/browser/touchAction.mdx +++ b/docs/commands/browser/touchAction.mdx @@ -2,66 +2,66 @@ import Admonition from "@theme/Admonition"; # touchAction -## Обзор {#overview} +## Overview {#overview} -Используйте команду `touchAction`, чтобы выполнить жесты в тестах на мобильной платформе. +Use the `touchAction` command to perform gestures in mobile platform tests. -Команда позволяет связывать воедино отдельные действия _[ad hoc][ad-hoc]_, которые затем будут применены к элементу приложения на устройстве. +The command allows chaining separate ad hoc actions, which will then be applied to the application element on the device. -Основные действия, которые можно использовать: +The main actions you can use are: -- **press** — нужно указать element или координаты (x, y), или и то, и другое -- **longPress** — нужно указать element или координаты (x, y), или и то, и другое -- **tap** — нужно указать element или координаты (x, y), или и то, и другое -- **moveTo** — нужно указать абсолютные координаты (x, y) -- **wait** — нужно указать время в миллисекундах -- **release** — ничего указывать не нужно +- **press** — requires an element or coordinates (x, y), or both +- **longPress** — requires an element or coordinates (x, y), or both +- **tap** — requires an element or coordinates (x, y), or both +- **moveTo** — requires absolute coordinates (x, y) +- **wait** — requires time in milliseconds +- **release** — no parameters needed - В настоящее время команда _touchAction_ доступна только для нативных приложений и не может - использоваться для взаимодействия с веб-приложениями. + Currently, the _touchAction_ command is only available for native apps and cannot be used to + interact with web apps. -## Использование {#usage} +## Usage {#usage} ```javascript await browser.touchAction(action); ``` -## Параметры команды {#parameters} +## Command Parameters {#parameters} - + - +
**Имя****Тип****Описание**
**Name****Type****Description**
actionObjectДействие, которое надо выполнить.
actionObjectThe action to perform.
-## Примеры использования {#examples} +## Usage Examples {#examples} ```javascript it("should do a touch gesture", async ({ browser }) => { const screen = await browser.$("//UITextbox"); - // простой touch action на элементе + // simple touch action on element await browser.touchAction({ action: "tap", element: screen, }); - // простой touch action с координатами x и y - // координаты касания – 30px направо и 20px вниз относительно вьюпорта + // simple touch action with x and y coordinates + // touch coordinates are 30px right and 20px down from the viewport await browser.touchAction({ action: "tap", x: 30, y: 20, }); - // простой touch action с координатами x и y - // координаты касания – 30px направо и 20px вниз относительно центра элемента + // simple touch action with x and y coordinates + // touch coordinates are 30px right and 20px down from the element center await browser.touchAction({ action: "tap", x: 30, @@ -69,8 +69,8 @@ it("should do a touch gesture", async ({ browser }) => { element: screen, }); - // multi action на элементе - // drag&drop из точки (200, 200) вниз на 100px по экрану + // multi action on element + // drag&drop from point (200, 200) down by 100px on the screen await browser.touchAction([ { action: "press", x: 200, y: 200 }, { action: "moveTo", x: 200, y: 300 }, @@ -79,8 +79,12 @@ it("should do a touch gesture", async ({ browser }) => { }); ``` -## Связанные команды {#related} +## Related Commands {#related} - [element.touchAction](../../element/touchAction) -[ad-hoc]: https://ru.wikipedia.org/wiki/Ad_hoc +## References + +We'd like to give credit to the original WebdriverIO docs [article](https://webdriver.io/docs/api/browser/touchAction), from which we drew some information while writing our version. + +[ad-hoc]: https://en.wikipedia.org/wiki/Ad_hoc diff --git a/docs/commands/browser/uploadFile.mdx b/docs/commands/browser/uploadFile.mdx index d103025..ea77b00 100644 --- a/docs/commands/browser/uploadFile.mdx +++ b/docs/commands/browser/uploadFile.mdx @@ -2,36 +2,35 @@ import Admonition from "@theme/Admonition"; # uploadFile -## Обзор {#overview} +## Overview {#overview} -Используйте команду `uploadFile`, чтобы загрузить файл на _[Selenium Standalone][selenium-file]_ сервер или в браузер через его драйвер (например, [Chromedriver][chromedriver]). +Use the `uploadFile` command to upload a file to a _[Selenium Standalone][selenium-file]_ server or to the browser via its driver (e.g., [Chromedriver][chromedriver]). - Команда _uploadFile_ поддерживается только в том случае, если вы используете [Selenium - Grid][selenium-grid] или [Chromedriver][chromedriver]. Это связано с тем, что она использует - неофициальную особенность протокола, которая реализована в данный момент только в _Chrome_ и при - запуске в [Selenium Grid][selenium-grid]. + The _uploadFile_ command is only supported when using [Selenium Grid][selenium-grid] or + [Chromedriver][chromedriver]. This is because it uses an unofficial protocol feature that is + currently implemented only in _Chrome_ and when running on [Selenium Grid][selenium-grid]. -## Использование {#usage} +## Usage {#usage} ```javascript await browser.uploadFile(localPath); ``` -## Параметры команды {#parameters} +## Command Parameters {#parameters} - + - +
**Имя****Тип****Описание**
**Name****Type****Description**
localPathStringПуть к локальному файлу.
localPathStringThe path to the local file.
-## Примеры использования {#examples} +## Usage Examples {#examples} ```javascript const path = require("path"); @@ -47,6 +46,10 @@ it("should upload a file", async ({ browser }) => { }); ``` +## References + +We'd like to give credit to the original WebdriverIO docs [article](https://webdriver.io/docs/api/browser/uploadFile), from which we drew some information while writing our version. + [selenium-grid]: https://www.selenium.dev/documentation/grid/ [selenium-file]: https://webdriver.io/docs/api/selenium/#file [chromedriver]: https://chromedriver.chromium.org/ diff --git a/docs/commands/browser/url.mdx b/docs/commands/browser/url.mdx index 520b0fe..7d07423 100644 --- a/docs/commands/browser/url.mdx +++ b/docs/commands/browser/url.mdx @@ -1,59 +1,63 @@ # url -## Обзор {#overview} +## Overview {#overview} -Используйте команду `url`, чтобы перейти по заданному URL-адресу в браузере. +Use the `url` command to navigate to the specified URL in the browser. -Если в конфигурации указан [baseUrl][base-url], то он будет добавлен к параметру `url` с помощью метода Node.JS [url.resolve()][url-resolve]. +If [baseUrl][base-url] is specified in the configuration, it will be added to the `url` parameter using the Node.js method [url.resolve()][url-resolve]. -Вызов `browser.url()` с тем же URL-адресом, что и в прошлый раз, вызовет перезагрузку страницы. +Calling `browser.url()` with the same URL as before will reload the page. -## Использование {#usage} +## Usage {#usage} ```javascript await browser.url(url); ``` -## Параметры команды {#parameters} +## Command Parameters {#parameters} - + - +
**Имя****Тип****Описание**
**Name****Type****Description**
urlStringURL, который надо открыть.
urlStringThe URL to open.
-## Примеры использования {#examples} +## Usage Examples {#examples} **url.js** ```javascript -// переходим на URL +// navigate to URL await browser.url("https://webdriver.io"); -// получаем url -console.log(await browser.getUrl()); // выведет: "https://webdriver.io" +// get the URL +console.log(await browser.getUrl()); // outputs: "https://webdriver.io" ``` **baseUrlResolutions.js** ```javascript -// Пусть baseUrl = http://example.com/site +// Let baseUrl = http://example.com/site -// При указании полного URL-адреса итоговый URL будет https://webdriver.io +// Specifying a full URL results in https://webdriver.io await browser.url("https://webdriver.io"); -// При указании URL-адреса без начального слэша -// итоговый URL формируется относительно всего baseUrl: http://example.com/site/relative +// Specifying a URL without a leading slash +// results in the URL relative to the baseUrl: http://example.com/site/relative await browser.url("relative"); -// При указании URL-адреса с начальным слэшом -// итоговый URL формируется относительно корня baseUrl: http://example.com/rootRelative +// Specifying a URL with a leading slash +// results in the URL relative to the root of baseUrl: http://example.com/rootRelative await browser.url("/rootRelative"); ``` +## References + +We'd like to give credit to the original WebdriverIO docs [article](https://webdriver.io/docs/api/browser/url), from which we drew some information while writing our version. + [base-url]: ../../../config/browsers#base_url [url-resolve]: https://nodejs.org/api/url.html#urlresolvefrom-to diff --git a/docs/commands/browser/waitUntil.mdx b/docs/commands/browser/waitUntil.mdx index 0fc59e1..77b2553 100644 --- a/docs/commands/browser/waitUntil.mdx +++ b/docs/commands/browser/waitUntil.mdx @@ -1,31 +1,31 @@ # waitUntil -## Обзор {#overview} +## Overview {#overview} -Используйте команду `waitUntil`, чтобы дождаться соблюдения определенного условия на странице в браузере. +Use the `waitUntil` command to wait for a specific condition to be met on the page in the browser. -## Использование {#usage} +## Usage {#usage} ```javascript await browser.waitUntil(condition, { timeout, timeoutMsg, interval }); ``` -## Параметры команды {#parameters} +## Command Parameters {#parameters} - + - - - - + + + +
**Имя****Тип****По умолчанию****Описание**
**Name****Type****Default****Description**
conditionFunction_N/A_Условие, которое нужно ждать.
timeoutNumber5000Таймаут в миллисекундах.
timeoutMsgString_N/A_Сообщение об ошибке, которое нужно бросить при таймауте.
intervalNumber500Интервал в миллисекундах между проверками условия.
conditionFunction_N/A_The condition to wait for.
timeoutNumber5000Timeout in milliseconds.
timeoutMsgString_N/A_Error message to throw when the timeout is reached.
intervalNumber500Interval in milliseconds between condition checks.
-## Примеры использования {#examples} +## Usage Examples {#examples} **example.html** @@ -52,6 +52,10 @@ it("should wait until text has changed", async ({ browser }) => { }); ``` -## Связанные команды {#related} +## Related Commands {#related} - [element.waitUntil](../../element/waitUntil) + +## References + +We'd like to give credit to the original WebdriverIO docs [article](https://webdriver.io/docs/api/browser/waitUntil), from which we drew some information while writing our version. diff --git a/docs/commands/element/$$.mdx b/docs/commands/element/$$.mdx index d5709cd..6f1216c 100644 --- a/docs/commands/element/$$.mdx +++ b/docs/commands/element/$$.mdx @@ -7,34 +7,34 @@ import Admonition from "@theme/Admonition"; # $$ -## Обзор {#overview} +## Overview {#overview} -Используйте команду `$$` вместо [findElements][find-elements] как более краткую команду, чтобы получить несколько элементов на странице в области видимости элемента. Эта команда похожа на команду [browser.$$()](../../browser/_dollardollar), и отличается только тем, что поиск элементов будет осуществляться среди потомков _(children)_ текущего элемента. +Use the `$$` command instead of [findElements][find-elements] as a shorter command to get multiple elements on the page within the scope of an element. This command is similar to the [browser.$$()](../../browser/_dollardollar) command but differs in that the search for elements will be among the children of the current element. - Подробнее о том, как выбрать определенные элементы, смотрите в рецепте «[Как использовать - селекторы][how-to-use-selectors]». + Read more about how to select specific elements in the recipe "[How to use + selectors][how-to-use-selectors]". -## Использование {#usage} +## Usage {#usage} ```javascript await browser.$(selector).$$(subSelector); ``` -## Параметры команды {#parameters} +## Command Parameters {#parameters} - + - +
**Имя****Тип****Описание**
**Name****Type****Description**
subSelectorString или Function или MatcherСелектор, или JS-функция, или Matcher для получения множества элементов.
subSelectorString or Function or MatcherSelector, JS function, or Matcher object to get multiple elements.
-## Примеры использования {#examples} +## Usage Examples {#examples} **index.html** @@ -58,37 +58,41 @@ await browser.$(selector).$$(subSelector); **$$.js** ```javascript -it("should get text a menu link", async ({ browser }) => { +it("should get text of a menu link", async ({ browser }) => { const text = await browser.$("#menu"); - console.log(await text.$$("li")[2].$("a").getText()); // выведет: "API" + console.log(await text.$$("li")[2].$("a").getText()); // outputs: "API" }); -it("should get text a menu link - JS Function", async ({ browser }) => { +it("should get text of a menu link - JS Function", async ({ browser }) => { const text = await browser.$("#menu"); console.log( await text .$$(function () { - // Использовать здесь стрелочную функцию нельзя. - // Это Element – https://developer.mozilla.org/en-US/docs/Web/API/Element - // в этом конкретном примере – это HTMLUListElement + // Arrow function cannot be used here. + // This is Element – https://developer.mozilla.org/en-US/docs/Web/API/Element + // in this specific example – this is HTMLUListElement // - // TypeScript-пользователи могут сделать что-нибудь вроде: + // TypeScript users can do something like: // return (this as Element).querySelector('li') return this.querySelectorAll("li"); // Element[] })[2] .$("a") .getText(), - ); // выведет: "API" + ); // outputs: "API" }); ``` -## Связанные команды +## Related Commands - [element.$](../_dollar) - [browser.$](../../browser/_dollar) - [browser.$$](../../browser/_dollardollar) +## References + +We'd like to give credit to the original WebdriverIO docs [article](https://webdriver.io/docs/api/element/$$), from which we drew some information while writing our version. + [find-elements]: https://webdriver.io/docs/api/webdriver/#findelements [how-to-use-selectors]: https://webdriver.io/docs/selectors diff --git a/docs/commands/element/$.mdx b/docs/commands/element/$.mdx index ba11d76..ec7edc6 100644 --- a/docs/commands/element/$.mdx +++ b/docs/commands/element/$.mdx @@ -7,38 +7,38 @@ import Admonition from "@theme/Admonition"; # $ -## Обзор {#overview} +## Overview {#overview} -Используйте команду `$` вместо [findElement][find-element] как более краткую команду, чтобы получить один элемент на странице. +Use the `$` command instead of [findElement][find-element] as a shorter command to get a single element on the page. -Команда `$` возвращает объект, описывающий элемент, на котором можно вызывать команды действия без передачи селектора. Однако, если вы все же передадите селектор, то сначала будет найден соответствующий элемент, а затем вызвано действие для этого элемента. Вы также можете передать объект в качестве селектора, где объект содержит свойство `element-6066-11e4-a52e-4f735466cecf` со значением ссылки на элемент. Затем команда преобразует ссылку в расширенный элемент WebdriverIO. Примечание: используйте эти объекты элементов только в том случае, если вы уверены, что они существуют на странице. Последнее можно проверить, например, используя команду [isExisting](../isExisting). +The `$` command returns an object describing the element, on which you can call action commands without passing the selector. However, if you do pass a selector, it will first find the corresponding element and then call the action for that element. You can also pass an object as the selector, where the object contains the property `element-6066-11e4-a52e-4f735466cecf` with the value of the element reference. The command then converts the reference into an extended WebdriverIO element. Note: Use these element objects only if you are certain they exist on the page. This can be verified, for example, using the [isExisting](../isExisting) command. -Вы можете связать `$` или `$$` вместе, чтобы спуститься по дереву DOM. Но имейте в виду, что объединение команд `$` и `$$` в цепочки имеет смысл только при использовании стратегий с множественными селекторами. Иначе вы будете делать ненужные запросы, которые замедлят тест (например, `$('body').$('div')` создаст два запроса, тогда как `$('body div')` сделает то же самое за один запрос). +You can chain `$` or `$$` together to navigate down the DOM tree. But note that chaining `$` and `$$` commands makes sense only when using multiple selector strategies. Otherwise, you will be making unnecessary requests that will slow down the test (e.g., `$('body').$('div')` creates two requests, whereas `$('body div')` does the same in one request). - Подробнее о том, как выбрать определенные элементы, читайте в рецепте «[Как использовать - селекторы][how-to-use-selectors]». + Read more about how to select specific elements in the recipe "[How to use + selectors][how-to-use-selectors]". -## Использование {#usage} +## Usage {#usage} ```javascript await browser.$(selector); ``` -## Параметры команды {#parameters} +## Command Parameters {#parameters} - + - +
**Имя****Тип****Описание**
**Name****Type****Description**
selectorString или Function или MatcherСелектор, или JS-функция, или объект Matcher для получения конкретного элемента.
selectorString or Function or MatcherSelector, JS function, or Matcher object to get a specific element.
-## Примеры использования {#examples} +## Usage Examples {#examples} **index.html** @@ -67,22 +67,22 @@ it("should get text of a menu link - JS Function", async ({ browser }) => { await text .$$("li")[2] .$(function () { - // Использовать здесь стрелочную функцию нельзя. - // Это Element – https://developer.mozilla.org/en-US/docs/Web/API/Element - // в этом конкретном примере – это HTMLLIElement + // Arrow function cannot be used here. + // This is Element – https://developer.mozilla.org/en-US/docs/Web/API/Element + // in this specific example – this is HTMLLIElement // - // TypeScript-пользователи могут сделать что-нибудь вроде: + // TypeScript users can do something like: // return (this as Element).querySelector('a') return this.querySelector("a"); // Element }) .getText(), - ); // выведет: "API" + ); // outputs: "API" }); -it("should get text a menu link", async ({ browser }) => { +it("should get text of a menu link", async ({ browser }) => { const text = await browser.$("#menu"); - console.log(await text.$$("li")[2].$("a").getText()); // выведет: "API" + console.log(await text.$$("li")[2].$("a").getText()); // outputs: "API" }); it("should allow to convert protocol result of an element into a WebdriverIO element", async ({ @@ -90,10 +90,10 @@ it("should allow to convert protocol result of an element into a WebdriverIO ele }) => { const activeElement = await browser.getActiveElement(); - console.log(await browser.$(activeElement).getTagName()); // выведет активный элемент + console.log(await browser.$(activeElement).getTagName()); // outputs the active element }); -it("should use Androids DataMatcher or ViewMatcher selector", async ({ browser }) => { +it("should use Android's DataMatcher or ViewMatcher selector", async ({ browser }) => { const menuItem = await browser.$({ name: "hasEntry", args: ["title", "ViewTitle"], @@ -109,11 +109,15 @@ it("should use Androids DataMatcher or ViewMatcher selector", async ({ browser } }); ``` -## Связанные команды {#related} +## Related Commands {#related} - [element.$$](../_dollardollar) - [browser.$](../../browser/_dollar) - [browser.$$](../../browser/_dollardollar) +## References + +We'd like to give credit to the original WebdriverIO docs [article](https://webdriver.io/docs/api/element/$), from which we drew some information while writing our version. + [find-element]: https://webdriver.io/docs/api/webdriver/#findelement [how-to-use-selectors]: https://webdriver.io/docs/selectors diff --git a/docs/commands/element/addValue.mdx b/docs/commands/element/addValue.mdx index a07ab56..d2989ba 100644 --- a/docs/commands/element/addValue.mdx +++ b/docs/commands/element/addValue.mdx @@ -1,28 +1,28 @@ # addValue -## Обзор {#overview} +## Overview {#overview} -Используйте команду `addValue`, чтобы добавить значение в элемент типа `` или `