Czas wykonania testów
Domyślnie, ten moduł sprawdzi, czy masz lokalną instalację Tesseract na swoim komputerze/w swoim pipeline. Jeśli nie masz lokalnej instalacji, automatycznie użyje wersji NodeJS. Może to powodować pewne spowolnienie, ponieważ przetwarzanie obrazu będzie wykonywane przez Node.js. NodeJS nie jest najlepszym systemem do przeprowadzania ciężkiego przetwarzania.
ALE...., istnieją sposoby na optymalizację czasu wykonania. Weźmy następujący skrypt testowy
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",
});
});
});
Kiedy wykonasz to po raz pierwszy, możesz zobaczyć następujące wyniki, gdzie wykonanie testu zajęło 5,9 sekundy.
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
Przycinanie obszaru wyszukiwania na ekranie
Możesz zoptymalizować czas wykonania, określając przycięty obszar do wykonania OCR.
Jeśli zmienisz skrypt na ten:
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",
});
});
});
Wtedy zobaczysz inny czas wykonania.
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
To zmniejszyło lokalny czas wykonania z 5,9 do 4,8 sekundy. Jest to redukcja o prawie 19%. Wyobraź sobie, co może zrobić dla większego skryptu z większą ilością danych.
Korzystanie z lokalnej instalacji Tesseract
Możesz przyspieszyć czas wykonania do nawet mniej niż minuty, jeśli masz lokalną instalację Tessarect na swoim komputerze i/lub w pipeline (więcej informacji o instalacji Tesseract w systemie lokalnym można znaleźć tutaj). Poniżej znajdziesz czas wykonania tego samego skryptu przy użyciu lokalnej instalacji Tesseract.
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
To zmniejszyło lokalny czas wykonania z 5,9 do 3,9 sekundy. Jest to redukcja o prawie 34%. Wyobraź sobie, co może zrobić dla większego skryptu z większą ilością danych.