82 lines
2.9 KiB
TypeScript
82 lines
2.9 KiB
TypeScript
import { expect, test } from '../../core/fixtures/base.fixture'
|
|
import { createModelLimitData } from './model-limits.data'
|
|
|
|
const createdLimits: { modelName: string; provider: string }[] = []
|
|
|
|
test.describe('Model Limits', () => {
|
|
test.beforeEach(async ({ modelLimitsPage }) => {
|
|
await modelLimitsPage.goto()
|
|
})
|
|
|
|
test.afterEach(async ({ modelLimitsPage }) => {
|
|
await modelLimitsPage.closeSheet()
|
|
for (const { modelName, provider } of [...createdLimits]) {
|
|
try {
|
|
const exists = await modelLimitsPage.modelLimitExists(modelName, provider)
|
|
if (exists) {
|
|
await modelLimitsPage.deleteModelLimit(modelName, provider)
|
|
}
|
|
} catch (e) {
|
|
console.error(`[CLEANUP] Failed to delete model limit ${modelName}:`, e)
|
|
}
|
|
}
|
|
createdLimits.length = 0
|
|
})
|
|
|
|
test('should display create button or empty state', async ({ modelLimitsPage }) => {
|
|
const createVisible = await modelLimitsPage.createBtn.isVisible().catch(() => false)
|
|
expect(createVisible).toBe(true)
|
|
})
|
|
|
|
test('should create a model limit with budget and rate limit', async ({ modelLimitsPage }) => {
|
|
const limitData = createModelLimitData({
|
|
provider: 'openai',
|
|
budget: { maxLimit: 5, resetDuration: '1M' },
|
|
rateLimit: { tokenMaxLimit: 500, requestMaxLimit: 20 },
|
|
})
|
|
|
|
const modelName = await modelLimitsPage.createModelLimit(limitData)
|
|
createdLimits.push({ modelName, provider: limitData.provider })
|
|
|
|
const exists = await modelLimitsPage.modelLimitExists(modelName, limitData.provider)
|
|
expect(exists).toBe(true)
|
|
})
|
|
|
|
test('should edit a model limit budget and rate limit', async ({ modelLimitsPage }) => {
|
|
const limitData = createModelLimitData({ provider: 'openai' })
|
|
|
|
const modelName = await modelLimitsPage.createModelLimit(limitData)
|
|
createdLimits.push({ modelName, provider: limitData.provider })
|
|
|
|
await modelLimitsPage.editModelLimit(modelName, limitData.provider, {
|
|
budget: { maxLimit: 20 },
|
|
rateLimit: { tokenMaxLimit: 2000, requestMaxLimit: 100 },
|
|
})
|
|
|
|
const exists = await modelLimitsPage.modelLimitExists(modelName, limitData.provider)
|
|
expect(exists).toBe(true)
|
|
})
|
|
|
|
test('should delete a model limit', async ({ modelLimitsPage }) => {
|
|
const limitData = createModelLimitData({
|
|
provider: 'openai',
|
|
budget: { maxLimit: 5 },
|
|
})
|
|
|
|
const modelName = await modelLimitsPage.createModelLimit(limitData)
|
|
createdLimits.push({ modelName, provider: limitData.provider })
|
|
|
|
let exists = await modelLimitsPage.modelLimitExists(modelName, limitData.provider)
|
|
expect(exists).toBe(true)
|
|
|
|
await modelLimitsPage.deleteModelLimit(modelName, limitData.provider)
|
|
const idx = createdLimits.findIndex(
|
|
(limit) => limit.modelName === modelName && limit.provider === limitData.provider
|
|
)
|
|
if (idx >= 0) createdLimits.splice(idx, 1)
|
|
|
|
exists = await modelLimitsPage.modelLimitExists(modelName, limitData.provider)
|
|
expect(exists).toBe(false)
|
|
})
|
|
})
|