@nickvuono/playwright-load-test
v0.1.3
Published
Load test your apps using Playwright's APIRequestContext
Downloads
16
Readme
🎭 playwright-load-test
A load testing harness for Playwright API testing
Although this is inteded for use with the default Playwright API Request Context, this is a general load testing harness that could also be used with Axios, Fetch, etc.
Prerequisites
npm i @playwright/test
Installation
npm i @nickvuono/playwright-load-test
Executors
| Executor | Description |
| -------- | ------- |
| iterations
| runs a specified number of iterations syncronously |
| duration
| runs iterations syncrounously for a given duration in seconds |
| iterations-per-second
| run a specified number of iterations per second for a given duration in seconds |
| variable-rate
| configure stages to ramp up and ramp down iterations per second over given durations in seconds |
Thes can be specified using the config()
function like so:
loadtest.config({
executor: "iterations-per-second",
duration: 15,
ips: 1,
});
Iterations Executor Example
import { test, expect } from "@playwright/test";
import loadtest from "@nickvuono/playwright-load-test";
loadtest.config({
executor: "iterations",
iterations: 10,
});
test("Iterations Executor Test @iterations-executor", async ({ request }) => {
await loadtest.exec(async () => {
const response = await request.get("https://yesno.wtf/api");
expect(response.ok()).toBeTruthy();
});
});
Duration Executor Example
import { test, expect } from "@playwright/test";
import loadtest from "@nickvuono/playwright-load-test";
loadtest.config({
executor: "duration",
duration: 10,
});
test("Duration Executor Test @duration-executor", async ({ request }) => {
await loadtest.exec(async () => {
const response = await request.get("https://yesno.wtf/api");
expect(response.ok()).toBeTruthy();
});
});
Iterations per Second Executor Example
import { test, expect } from "@playwright/test";
import loadtest from "@nickvuono/playwright-load-test";
loadtest.config({
executor: "iterations-per-second",
duration: 15,
ips: 1,
});
test("Iterations per Second Executor Test @iterations-per-second-executor", async ({
request,
}) => {
await loadtest.exec(async () => {
const response = await request.get("https://yesno.wtf/api");
expect(response.ok()).toBeTruthy();
});
});
Varaible Rate Executor Example
import { test, expect } from "@playwright/test";
import loadtest from "@nickvuono/playwright-load-test";
loadtest.config({
executor: "variable-rate",
stages: [
{
ips: 1,
duration: 5,
},
{
ips: 2,
duration: 5,
},
{
ips: 1,
duration: 10,
},
],
});
test("Variable Rate Executor Test @variable-rate-executor", async ({
request,
}) => {
await loadtest.exec(async () => {
const response = await request.get("https://yesno.wtf/api");
expect(response.ok()).toBeTruthy();
});
});
Contributors
Nick Vuono - creator and maintainer