test: 智能识别与英文名搜索的单测 + e2e
Some checks failed
PR Preview / teardown-preview (pull_request) Has been skipped
Test / unit-test (push) Successful in 6s
Test / build-check (push) Successful in 6s
PR Preview / test (pull_request) Successful in 6s
PR Preview / deploy-preview (pull_request) Successful in 16s
Test / e2e-test (push) Failing after 6m2s
Some checks failed
PR Preview / teardown-preview (pull_request) Has been skipped
Test / unit-test (push) Successful in 6s
Test / build-check (push) Successful in 6s
PR Preview / test (pull_request) Successful in 6s
PR Preview / deploy-preview (pull_request) Successful in 16s
Test / e2e-test (push) Failing after 6m2s
- 将粘贴解析抽到 useOilProductPaste composable - 8 条 vitest 覆盖价格/规格/中英文名/类型判断 - 2 条 cypress 覆盖 UI 填充(产品 100ml、精油 15ml) - 补英文名搜索 e2e;旧 search 用例 placeholder 选择器宽松化 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -16,12 +16,22 @@ describe('Oil Reference Page', () => {
|
||||
it('filters oils by search', () => {
|
||||
cy.get('.oil-chip').then($chips => {
|
||||
const initial = $chips.length
|
||||
cy.get('input[placeholder*="搜索精油"]').type('薰衣草')
|
||||
cy.get('input[placeholder*="搜索"]').type('薰衣草')
|
||||
cy.wait(300)
|
||||
cy.get('.oil-chip').should('have.length.lt', initial)
|
||||
})
|
||||
})
|
||||
|
||||
it('filters oils by english name', () => {
|
||||
cy.get('.oil-chip').then($chips => {
|
||||
const initial = $chips.length
|
||||
cy.get('input[placeholder*="搜索"]').type('Lavender')
|
||||
cy.wait(300)
|
||||
cy.get('.oil-chip').should('have.length.lt', initial)
|
||||
cy.get('.oil-chip').should('exist')
|
||||
})
|
||||
})
|
||||
|
||||
it('toggles between bottle and drop price view', () => {
|
||||
cy.get('.oil-chip').first().invoke('text').then(textBefore => {
|
||||
cy.contains('滴价').click()
|
||||
|
||||
51
frontend/cypress/e2e/oil-smart-paste.cy.js
Normal file
51
frontend/cypress/e2e/oil-smart-paste.cy.js
Normal file
@@ -0,0 +1,51 @@
|
||||
describe('Oil Reference Smart Paste', () => {
|
||||
let adminToken
|
||||
|
||||
before(() => {
|
||||
cy.getAdminToken().then(token => { adminToken = token })
|
||||
})
|
||||
|
||||
beforeEach(() => {
|
||||
cy.visit('/oils', {
|
||||
onBeforeLoad(win) {
|
||||
win.localStorage.setItem('oil_auth_token', adminToken)
|
||||
}
|
||||
})
|
||||
cy.get('.oil-chip, .oils-grid', { timeout: 10000 }).should('exist')
|
||||
})
|
||||
|
||||
it('smart paste fills product form fields', () => {
|
||||
cy.contains('button', '+ 新增').click()
|
||||
cy.contains('button', '🪄 智能识别').click()
|
||||
|
||||
const sample = [
|
||||
'优惠顾客价:¥310PT:41',
|
||||
'',
|
||||
'零售价:¥465',
|
||||
'',
|
||||
'点数:37 规格:100毫升',
|
||||
'',
|
||||
'花样年华焕颜精华水 Salubelle Rejuvenating Essence',
|
||||
].join('\n')
|
||||
|
||||
cy.get('textarea').type(sample, { parseSpecialCharSequences: false, delay: 0 })
|
||||
cy.contains('button', '识别并填入').click()
|
||||
|
||||
cy.get('.add-type-tab.active').should('contain', '其他')
|
||||
cy.get('input[placeholder="产品名称"]').should('have.value', '花样年华焕颜精华水')
|
||||
cy.get('input[placeholder="英文名"]').should('have.value', 'Salubelle Rejuvenating Essence')
|
||||
cy.get('input[placeholder="会员价 ¥"]').should('have.value', '310')
|
||||
cy.get('input[placeholder="零售价 ¥"]').should('have.value', '465')
|
||||
cy.get('input[placeholder="容量"]').should('have.value', '100')
|
||||
})
|
||||
|
||||
it('smart paste detects standard ml volume as essential oil', () => {
|
||||
cy.contains('button', '+ 新增').click()
|
||||
cy.contains('button', '🪄 智能识别').click()
|
||||
const sample = '会员价:¥200\n零售价:¥267\n规格:15毫升\n薰衣草测试 LavenderTest'
|
||||
cy.get('textarea').type(sample, { parseSpecialCharSequences: false, delay: 0 })
|
||||
cy.contains('button', '识别并填入').click()
|
||||
cy.get('.add-type-tab.active').should('contain', '精油')
|
||||
cy.get('input[placeholder="精油名称"]').should('have.value', '薰衣草测试')
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user