Temps d'exécution des tests
Par défaut, ce module vérifiera si vous avez une installation locale de Tesseract sur votre machine/dans votre pipeline. Si vous n'avez pas d'installation locale, il utilisera automatiquement une version NodeJS. Cela pourrait causer une certaine lenteur car le traitement d'image sera effectué par Node.js. NodeJS n'est pas le meilleur système pour effectuer un traitement lourd.
MAIS...., il existe des moyens d'optimiser le temps d'exécution. Prenons le script de test suivant
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",
});
});
});
Lorsque vous l'exécutez pour la première fois, vous pourriez voir les résultats suivants où il a fallu 5,9 secondes pour terminer le test.
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
Recadrer la zone de recherche d'un écran
Vous pouvez optimiser le temps d'exécution en fournissant une zone recadrée pour exécuter l'OCR.
Si vous modifiez alors le script comme ceci :
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",
});
});
});
Vous verrez alors un temps d'exécution différent.
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
Cela a réduit le temps d'exécution local de 5,9 à 4,8 secondes. C'est une réduction de près de 19%. Imaginez ce que cela peut faire pour un script plus volumineux avec plus de données.
Utilisation d'une installation locale de Tesseract
Vous pouvez accélérer votre temps d'exécution à moins d'une minute si vous avez une installation locale de Tesseract sur votre machine locale et/ou dans votre pipeline (plus d'informations sur l'installation de Tesseract sur votre système local peuvent être trouvées ici). Vous pouvez trouver ci-dessous le temps d'exécution du même script utilisant une installation locale de 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
Cela a réduit le temps d'exécution local de 5,9 à 3,9 secondes. C'est une réduction de près de 34%. Imaginez ce que cela peut faire pour un script plus volumineux avec plus de données.