Script conversion.js
const fs = require('fs');
const path = require('path');
const csvFilePath = path.join(__dirname, 'logs.csv');
function checkStatus(requestParams,response, context, ee, next) {
if (response.statusCode !== 200 && response.statusCode !== 201 && response.statusCode !== 204 && response.statusCode !== 404 && response.statusCode !== 409){
var endpoint = `${requestParams.method}:${requestParams.url}`
console.log("Usuario error:"+context.vars.username)
console.log("StatusCode: "+ response.statusCode)
if (typeof requestParams.searchParams !== 'undefined'){
endpoint = `${requestParams.method}:${requestParams.url}?${requestParams.searchParams}`
}
console.log("Endpoint: "+ endpoint)
const csvLine = `${context.vars.username},${endpoint},${response.statusCode}\n`;
fs.appendFile(csvFilePath, csvLine, (err) => {
if (err) {
console.error("Error writing to CSV:", err);
} else {
console.log("log saved to CSV");
}
});
}
return next();
}
async function loadMiu4Home(page, vuContext) {
await page.goto("/");
await page.getByPlaceholder("Usuario").fill( vuContext.vars.USERNAME )
await page.getByPlaceholder("Contraseña").fill( vuContext.vars.CLAVE )
await page.click('text=Ingresar');
await page.waitForURL();
await page.screenshot({ path: 'home.png', fullPage: true });
}
async function loadMiu4Perfil(page, vuContext) {
await page.goto("/");
await page.getByPlaceholder("Usuario").fill( vuContext.vars.USERNAME )
await page.getByPlaceholder("Contraseña").fill( vuContext.vars.CLAVE )
await page.click('text=Ingresar');
await page.waitForURL();
await page.goto("/perfil");
await page.waitForURL();
await page.screenshot({ path: 'perfil.png', fullPage: true });
}
module.exports = {
loadMiu4Home,
loadMiu4Perfil
}
Artillery Script
config:
target: "https://mi-web.cl"
engines:
playwright:
aggregateByName: true
defaultNavigationTimeout: 300000
showAllPageMetrics: true
extendedMetrics: true
phases:
-
arrivalRate: 1
duration: 60
name: Start
- duration: 120
arrivalRate: 10
maxVusers: 275
name: Warm up
- duration: 300
arrivalRate: 275
maxVusers: 275
name: Sustained load
-
arrivalRate: 1
duration: 300
rampTo: 0
name: Ramp down load
processor: "./conversion.js"
payload:
path: './resources/user_miu4.csv'
fields:
- 'USERNAME'
- 'CLAVE'
order: sequence
cast: false
skipHeader: true
http:
timeout: 10000
extendedMetrics: true
scenarios:
- engine: "playwright"
name: "--> Load Home MIU4"
testFunction: "loadMiu4Home"
weight: 9
- engine: "playwright"
name: "--> Load Perfil MIU4"
testFunction: "loadMiu4Perfil"
weight: 1