76 lines
1.9 KiB
JavaScript
76 lines
1.9 KiB
JavaScript
|
|
/**
|
|||
|
|
* 使用者功能冒煙測試
|
|||
|
|
*
|
|||
|
|
* 此測試用於 Dev/QA 環境,快速驗證使用者功能是否正常運作。
|
|||
|
|
* 測試重點:基本功能可用性,不關注性能。
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
import { registerWithCredentials, loginWithCredentials } from '../../scenarios/apis/auth.js';
|
|||
|
|
import { getUserInfo, updateUserInfo } from '../../scenarios/apis/user.js';
|
|||
|
|
|
|||
|
|
export const options = {
|
|||
|
|
scenarios: {
|
|||
|
|
smoke_user: {
|
|||
|
|
executor: 'shared-iterations',
|
|||
|
|
vus: 1,
|
|||
|
|
iterations: 1,
|
|||
|
|
maxDuration: '30s',
|
|||
|
|
tags: { test_type: 'smoke', api: 'user' },
|
|||
|
|
},
|
|||
|
|
},
|
|||
|
|
thresholds: {
|
|||
|
|
checks: ['rate==1.0'], // 所有檢查必須通過
|
|||
|
|
http_req_duration: ['p(95)<2000'], // 95% 的請求應在 2 秒內完成
|
|||
|
|
},
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
export default function () {
|
|||
|
|
const baseUrl = __ENV.BASE_URL || 'https://localhost:8888';
|
|||
|
|
const timestamp = Date.now();
|
|||
|
|
const loginId = `smoke_user_${timestamp}@example.com`;
|
|||
|
|
const password = 'SmokeTest123!';
|
|||
|
|
|
|||
|
|
// 1. 註冊並登入以獲取 Token
|
|||
|
|
const registerResult = registerWithCredentials({
|
|||
|
|
baseUrl,
|
|||
|
|
loginId,
|
|||
|
|
password,
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
if (!registerResult.success || !registerResult.tokens) {
|
|||
|
|
console.error('Smoke test failed: Registration failed');
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
const accessToken = registerResult.tokens.accessToken;
|
|||
|
|
|
|||
|
|
// 2. 取得使用者資訊
|
|||
|
|
const getInfoResult = getUserInfo({
|
|||
|
|
baseUrl,
|
|||
|
|
accessToken,
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
if (!getInfoResult.success) {
|
|||
|
|
console.error('Smoke test failed: Get user info failed');
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 3. 更新使用者資訊
|
|||
|
|
const updateInfoResult = updateUserInfo({
|
|||
|
|
baseUrl,
|
|||
|
|
accessToken,
|
|||
|
|
updateData: {
|
|||
|
|
nickname: `SmokeTest_${timestamp}`,
|
|||
|
|
preferred_language: 'zh-tw',
|
|||
|
|
},
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
if (!updateInfoResult.success) {
|
|||
|
|
console.error('Smoke test failed: Update user info failed');
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
console.log('Smoke test passed: All user operations succeeded');
|
|||
|
|
}
|
|||
|
|
|