54 lines
1.1 KiB
JavaScript
54 lines
1.1 KiB
JavaScript
import http from 'k6/http';
|
|
import { check, sleep } from 'k6';
|
|
|
|
export let options = {
|
|
stages: [
|
|
{ duration: '30s', target: 5 },
|
|
{ duration: '1m', target: 10 },
|
|
{ duration: '30s', target: 0 },
|
|
],
|
|
thresholds: {
|
|
http_req_duration: ['p(95)<2000'],
|
|
http_req_failed: ['rate<0.02'],
|
|
},
|
|
};
|
|
|
|
const BASE_URL = __ENV.BASE_URL || 'http://localhost:3001';
|
|
|
|
export function setup() {
|
|
console.log('Starting frontend performance test...');
|
|
console.log(`Base URL: ${BASE_URL}`);
|
|
}
|
|
|
|
export default function () {
|
|
const pages = [
|
|
'/',
|
|
'/login',
|
|
'/dashboard',
|
|
'/system/config',
|
|
'/system/dict',
|
|
'/system/notice',
|
|
'/oplog',
|
|
'/loginlog',
|
|
'/files',
|
|
];
|
|
|
|
const page = pages[Math.floor(Math.random() * pages.length)];
|
|
const url = `${BASE_URL}${page}`;
|
|
|
|
const response = http.get(url, {
|
|
tags: { name: page },
|
|
});
|
|
|
|
check(response, {
|
|
'status is 200': (r) => r.status === 200,
|
|
'response time < 2s': (r) => r.timings.duration < 2000,
|
|
'page loads successfully': (r) => r.body.length > 0,
|
|
});
|
|
|
|
sleep(2);
|
|
}
|
|
|
|
export function teardown(data) {
|
|
console.log('Frontend performance test completed');
|
|
} |