Skip to content

Commit

Permalink
Fix cnumr#29 - Screenshots after actions (cnumr#39)
Browse files Browse the repository at this point in the history
* Take a screenshot after action

* Documentation on actions' screenshots

* Remove Screenshot after actions

* Update README.md

Fix typo

* Suppression catch inutile

Le catch était inutile car l'exception était relancée dans tous les cas. Seul le finally est important, pour toujours prendre le screenshot.
  • Loading branch information
PierreRustOrange authored Jun 20, 2022
1 parent a4363a9 commit 6f1fa87
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 28 deletions.
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -188,8 +188,10 @@ Il est possible de définir une liste d'actions à travers le champ `actions` qu
| `waitForSelector` | string | Non | Attend que l'élément HTML définit par le sélecteur CSS soit visible |
| `waitForXPath` | string | Non | Attend que l'élément HTML définit par le XPath soit visible |
| `waitForNavigation` | string | Non | Attend la fin du chargement de la page. 4 valeurs possibles : `load`, `domcontentloaded`, `networkidle0`, `networkidle2` |
| `screenshot` | string | Non | Réalise une capture d'écran de la page, après avoir réalisé l'action. La valeur à renseigner est le nom de la capture d'écran. La capture d'écran est réalisée même si l'action est en erreur. |

Les conditions de type `waitFor` peuvent être réutilisées afin de définir une condition d'attente après l'exécution de l'action. Elles restent optionnelles. La capture d'écran, le cas échéant, est réalisée après cette condition d'attente.

Les conditions de type `waitFor` peuvent être réutilisées afin de définir une condition d'attente après l'exécution de l'action. Elles restent optionnelles.

Des paramètres supplémentaires peuvent être nécessaires selon le type de l'action.

Expand Down
53 changes: 26 additions & 27 deletions cli-core/analysis.js
Original file line number Diff line number Diff line change
Expand Up @@ -53,16 +53,9 @@ async function analyseURL(browser, pageInformations, options) {
}
}

try {
if (pageInformations.actions) {
// Execute actions on page (click, text, ...)
await startActions(page, pageInformations.actions, TIMEOUT);
}
} finally {
// Take screenshot (even if the action fails)
if (pageInformations.actions && pageInformations.actions.screenshot) {
await takeScreenshot(page, pageInformations.actions.screenshot);
}
if (pageInformations.actions) {
// Execute actions on page (click, text, ...)
await startActions(page, pageInformations.actions, TIMEOUT);
}

let harObj = await pptrHar.stop();
Expand Down Expand Up @@ -142,22 +135,28 @@ async function startActions(page, actions, TIMEOUT) {
await page.waitForTimeout(timeout);
}

if (action.type === "click") {
await page.click(action.element);
await waitPageLoading(page, action, TIMEOUT);
} else if (action.type === "text") {
await page.type(action.element, action.content, {delay: 100});
await waitPageLoading(page, action, TIMEOUT);
} else if (action.type === "select") {
let args = [action.element].concat(action.values);
// equivalent to : page.select(action.element, action.values[0], action.values[1], ...)
await page.select.apply(page, args);
await waitPageLoading(page, action, TIMEOUT);
} else if (action.type === "scroll") {
await scrollToBottom(page);
await waitPageLoading(page, action, TIMEOUT);
} else {
console.log("Unknown action for '" + actionName + "' : " + action.type);
try {
if (action.type === "click") {
await page.click(action.element);
await waitPageLoading(page, action, TIMEOUT);
} else if (action.type === "text") {
await page.type(action.element, action.content, {delay: 100});
await waitPageLoading(page, action, TIMEOUT);
} else if (action.type === "select") {
let args = [action.element].concat(action.values);
// equivalent to : page.select(action.element, action.values[0], action.values[1], ...)
await page.select.apply(page, args);
await waitPageLoading(page, action, TIMEOUT);
} else if (action.type === "scroll") {
await scrollToBottom(page);
await waitPageLoading(page, action, TIMEOUT);
} else {
console.log("Unknown action for '" + actionName + "' : " + action.type);
}
} finally {
if (action.screenshot) {
await takeScreenshot(page, action.screenshot);
}
}
}
}
Expand Down Expand Up @@ -333,4 +332,4 @@ async function createJsonReports(browser, pagesInformations, options, proxy, hea
module.exports = {
createJsonReports,
login
}
}

0 comments on commit 6f1fa87

Please sign in to comment.