|
| 1 | +import Admonition from "@theme/Admonition"; |
| 2 | + |
| 3 | +# switchToRepl |
| 4 | + |
| 5 | +## Обзор {#overview} |
| 6 | + |
| 7 | +Используйте команду `switchToRepl`, чтобы остановить выполнение теста и открыть интерактивный интерфейс REPL в терминале, в котором можно выполнять код построчно и наблюдать за результатом выполнения в реальном времени. |
| 8 | +Этот режим позволяет удобно пошабого дебажить проблемные тесты как в локально установленном браузере, так и в удаленном гриде (например, с помощью [VNC][vnc]). |
| 9 | + |
| 10 | +Для более удобного использования REPL-режима рекомендуется использовать [расширение для VS Code][extension]. |
| 11 | + |
| 12 | +<Admonition type="warning"> |
| 13 | + Данная команда доступна только при запуске `testplane` с опцией `--repl`. При запуске необходимо |
| 14 | + явно указать тест и браузер, т.к. в REPL-режиме нельзя запускать сразу несколько тестов. |
| 15 | +</Admonition> |
| 16 | + |
| 17 | +## Использование {#usage} |
| 18 | + |
| 19 | +```typescript |
| 20 | +await browser.switchToRepl(ctx); |
| 21 | +``` |
| 22 | + |
| 23 | +## Параметры команды {#parameters} |
| 24 | + |
| 25 | +<table> |
| 26 | + <thead> |
| 27 | + <tr> |
| 28 | + <td>**Имя**</td> |
| 29 | + <td>**Тип**</td> |
| 30 | + <td>**Описание**</td> |
| 31 | + </tr> |
| 32 | + </thead> |
| 33 | + <tbody> |
| 34 | + <tr> |
| 35 | + <td>`context`</td> |
| 36 | + <td>`Record<string, unknown>`</td> |
| 37 | + <td>Контекст с данными, которые будут доступны в интерактивном режиме.</td> |
| 38 | + </tr> |
| 39 | + </tbody> |
| 40 | +</table> |
| 41 | + |
| 42 | +## Примеры использования {#examples} |
| 43 | + |
| 44 | +```typescript |
| 45 | +it("test", async ({ browser }) => { |
| 46 | + console.log("before open repl"); |
| 47 | + |
| 48 | + await browser.switchToRepl(); |
| 49 | + |
| 50 | + console.log("after open repl"); |
| 51 | +}); |
| 52 | +``` |
| 53 | + |
| 54 | +При выполнении данного теста сначала будет выведен текст `before open repl` в консоль. Затем выполнение теста остановится, и в терминале откроется интерактивный интерфейс REPL, ожидающий ввода команд. |
| 55 | +Например, можно выполнить следующую команду и сразу получить результат ее выполнения: |
| 56 | + |
| 57 | +```bash |
| 58 | +> await browser.getUrl(); |
| 59 | +about:blank |
| 60 | +``` |
| 61 | + |
| 62 | +После того, как вы закончите работу в REPL (например, нажатием `Cmd+D`), выполнение теста продолжится, и в консоли терминала будет выведен текст `after open repl`, а затем браузер закроется. |
| 63 | + |
| 64 | +Также, можно передать контекст в REPL, чтобы переменная была доступна в интерфейсе. Например: |
| 65 | + |
| 66 | +``` |
| 67 | +it("test", async ({browser}) => { |
| 68 | + const counter = 1; |
| 69 | +
|
| 70 | + await browser.switchToRepl({ counter }); |
| 71 | +}); |
| 72 | +``` |
| 73 | + |
| 74 | +Т.к. мы передали в контекст переменную `counter`, то она будет доступна в терминале: |
| 75 | + |
| 76 | +```bash |
| 77 | +npx hermione --repl --grep "test" -b "chrome" |
| 78 | +> console.log("counter:", counter); |
| 79 | +counter: 1 |
| 80 | +``` |
| 81 | + |
| 82 | +[extension]: https://marketplace.visualstudio.com/items?itemName=gemini-testing.vscode-testplane |
| 83 | +[vnc]: https://novnc.com/info.html |
0 commit comments