Pular para o conteúdo principal

Tempo de execução de teste

Por padrão, este módulo verificará se você tem uma instalação local do Tesseract em sua máquina/em seu pipeline. Se você não tiver uma instalação local, ele automaticamente usará uma versão NodeJS. Isso pode causar alguma lentidão porque o processamento de imagem será feito pelo Node.js. NodeJS não é o melhor sistema para fazer processamento pesado.

MAS..., existem maneiras de otimizar o tempo de execução. Vamos considerar o seguinte script de teste

import { browser } from "@wdio/globals";

describe("Search", () => {
it("be able to search for a value", async () => {
await browser.url("https://webbrowser.io");
await browser.ocrClickOnText({
text: "Search",
});
await browser.ocrSetValue({
text: "docs",
value: "specfileretries",
});
await browser.ocrWaitForTextDisplayed({
text: "specFileRetries",
});
});
});

Quando você executa isso pela primeira vez, você pode ver os seguintes resultados onde levou 5,9 segundos para finalizar o teste.

npm run wdio -- --logLevel=silent

> ocr-demo@1.0.0 wdio
> wdio run ./wdio.conf.ts --logLevel=silent


Execution of 1 workers started at 2024-05-26T04:52:53.405Z

[0-0] RUNNING in chrome - file:///test/specs/test.e2e.ts
[0-0] Estimating resolution as 182
[0-0] Estimating resolution as 124
[0-0] Estimating resolution as 126
[0-0] PASSED in chrome - file:///test/specs/test.e2e.ts

"spec" Reporter:
------------------------------------------------------------------
[chrome 125.0.6422.78 mac #0-0] Running: chrome (v125.0.6422.78) on mac
[chrome 125.0.6422.78 mac #0-0] Session ID: d281dcdc43962b95835aea8f64cab6c7
[chrome 125.0.6422.78 mac #0-0]
[chrome 125.0.6422.78 mac #0-0] » /test/specs/test.e2e.ts
[chrome 125.0.6422.78 mac #0-0] Search
[chrome 125.0.6422.78 mac #0-0] ✓ be able to search for a value
[chrome 125.0.6422.78 mac #0-0]
[chrome 125.0.6422.78 mac #0-0] 1 passing (5.9s)


Spec Files: 1 passed, 1 total (100% completed) in 00:00:08

Cortando a área de busca de uma tela​

Você pode otimizar o tempo de execução fornecendo uma área recortada para executar o OCR.

Se você alterar o script para isso:

import { browser } from "@wdio/globals";

describe("Search", () => {
it("be able to search for a value", async () => {
await browser.url("https://webdriver.io");
await driver.ocrClickOnText({
haystack: $(".DocSearch"),
text: "Search",
});
await driver.ocrSetValue({
haystack: $(".DocSearch-Form"),
text: "docs",
value: "specfileretries",
});
await driver.ocrWaitForTextDisplayed({
haystack: $(".DocSearch-Dropdown"),
text: "specFileRetries",
});
});
});

Então você verá um tempo de execução diferente.

npm run wdio -- --logLevel=silent

> ocr-demo@1.0.0 wdio
> wdio run ./wdio.conf.ts --logLevel=silent


Execution of 1 workers started at 2024-05-26T04:56:55.326Z

[0-0] RUNNING in chrome - file:///test/specs/test.e2e.ts
[0-0] Estimating resolution as 182
[0-0] Estimating resolution as 124
[0-0] Estimating resolution as 124
[0-0] PASSED in chrome - file:///test/specs/test.e2e.ts

"spec" Reporter:
------------------------------------------------------------------
[chrome 125.0.6422.78 mac #0-0] Running: chrome (v125.0.6422.78) on mac
[chrome 125.0.6422.78 mac #0-0] Session ID: c6cb1843535bda3ee3af07920ce232b8
[chrome 125.0.6422.78 mac #0-0]
[chrome 125.0.6422.78 mac #0-0] » /test/specs/test.e2e.ts
[chrome 125.0.6422.78 mac #0-0] Search
[chrome 125.0.6422.78 mac #0-0] ✓ be able to search for a value
[chrome 125.0.6422.78 mac #0-0]
[chrome 125.0.6422.78 mac #0-0] 1 passing (4.8s)


Spec Files: 1 passed, 1 total (100% completed) in 00:00:08
Cortando imagens

Isso reduziu o tempo de execução local de 5,9 para 4,8 segundos. Esta é uma redução de quase 19%. Imagine o que isso pode fazer por um script maior com mais dados.

Usando uma instalação local do Tesseract​

Você pode acelerar seu tempo de execução para menos de um minuto se tiver uma instalação local do Tessarect em sua máquina local e/ou em seu pipeline (mais informações sobre como instalar o Tesseract em seu sistema local podem ser encontradas aqui). Você pode encontrar o tempo de execução do mesmo script usando uma instalação local do Tesseract abaixo.

npm run wdio -- --logLevel=silent

> ocr-demo@1.0.0 wdio
> wdio run ./wdio.conf.ts --logLevel=silent


Execution of 1 workers started at 2024-05-26T04:59:11.620Z

[0-0] RUNNING in chrome - file:///test/specs/test.e2e.ts
[0-0] PASSED in chrome - file:///test/specs/test.e2e.ts

"spec" Reporter:
------------------------------------------------------------------
[chrome 125.0.6422.78 mac #0-0] Running: chrome (v125.0.6422.78) on mac
[chrome 125.0.6422.78 mac #0-0] Session ID: 87f8c1e949e15a383b902e4d59b1f738
[chrome 125.0.6422.78 mac #0-0]
[chrome 125.0.6422.78 mac #0-0] » /test/specs/test.e2e.ts
[chrome 125.0.6422.78 mac #0-0] Search
[chrome 125.0.6422.78 mac #0-0] ✓ be able to search for a value
[chrome 125.0.6422.78 mac #0-0]
[chrome 125.0.6422.78 mac #0-0] 1 passing (3.9s)


Spec Files: 1 passed, 1 total (100% completed) in 00:00:06
Instalação local

Isso reduziu o tempo de execução local de 5,9 para 3,9 segundos. Esta é uma redução de quase 34%. Imagine o que isso pode fazer por um script maior com mais dados.

Welcome! How can I help?

WebdriverIO AI Copilot