123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- // 定义类型默认值映射,与页面保持一致
- const valueTypeDefaultMap = new Map([
- ['String', 'hello'],
- ['Number', '1'],
- ['Boolean', 'true'],
- ['Object', '{"name": "张三","age": 12}'],
- ['Array', '[1, "hello", true, { "key": "value" }]']
- ])
- const platformInfo = process.env.uniTestPlatformInfo.toLocaleLowerCase()
- describe('Storage管理器页面-多类型新增', () => {
- let page
- beforeAll(async () => {
- page = await program.navigateTo('/pages/API/storage/storagemanage')
- // 开启测试模式,跳过确认弹窗
- await page.callMethod('setTestMode', true)
- await page.waitFor(500)
- const list = await page.callMethod('getStorageList')
- // 点击清空按钮
- if (list.length) {
- const clearBtn = await page.$('.btn-clear')
- await clearBtn.tap()
- await page.waitFor(300)
- }
- })
- afterAll(async () => {
- // 关闭测试模式
- await page.callMethod('setTestMode', false)
- })
- it('1. 新增String类型', async () => {
- // 点击新建按钮
- const createBtn = await page.$('.btn-create')
- await createBtn.tap()
- await page.waitFor(300)
- // 获取弹窗元素
- const mask = await page.$('.dialog-mask')
- const keyInput = await mask.$('.edit-input')
- const valueTextarea = await mask.$('.edit-textarea')
- const saveBtn = await mask.$('.btn-save')
- // 输入内容
- await keyInput.input('test_string')
- await valueTextarea.input('hello world')
- await saveBtn.tap()
- await page.waitFor(300)
- // 验证新增成功
- const list = await page.callMethod('getStorageList')
- expect(list.length).toBe(1)
- if (!platformInfo.startsWith('mp')) {
- expect(list[0].key).toBe('test_string')
- expect(list[0].value).toBe('hello world')
- }
- })
- it('2. 编辑String类型', async () => {
- // 点击编辑按钮
- const editBtn = await page.$('.btn-edit')
- await editBtn.tap()
- await page.waitFor(300)
- // 获取弹窗元素
- const mask = await page.$('.dialog-mask')
- const keyInput = await mask.$('.edit-input')
- const valueTextarea = await mask.$('.edit-textarea')
- const saveBtn = await mask.$('.btn-save')
- // 修改内容
- await keyInput.input('test_string_edited')
- await valueTextarea.input('hello world edited')
- await saveBtn.tap()
- await page.waitFor(300)
- // 验证修改成功
- const list = await page.callMethod('getStorageList')
- // 微信小程序端,基础库3.5.8以上版本,获取 value是[object HTMLElement] 暂时跳过
- if (!platformInfo.startsWith('mp')) {
- expect(list[0].key).toBe('test_string_edited')
- expect(list[0].value).toBe('hello world edited')
- }
- })
- it('3. 删除String类型', async () => {
- // 获取list-view的所有项,并选择第一个
- const listView = await page.$('.list-view')
- const listItems = await listView.$$('list-item')
- await listItems[0].tap()
- await page.waitFor(300)
- // 点击删除按钮
- const deleteBtn = await page.$('.btn-delete')
- await deleteBtn.tap()
- await page.waitFor(300)
- // 验证删除成功
- const list = await page.callMethod('getStorageList')
- expect(list.length).toBe(0)
- })
- it('4. 测试切换类型自动填充默认值', async () => {
- // 点击新建按钮
- const createBtn = await page.$('.btn-create')
- await createBtn.tap()
- await page.waitFor(300)
- // 获取弹窗元素
- const mask = await page.$('.dialog-mask')
- const typeItems = await mask.$$('.edit-type-radio')
- // 测试每种类型
- for (let i = 0; i < typeItems.length; i++) {
- await typeItems[i].tap()
- await page.waitFor(200)
- // 验证默认值是否正确
- const editValue = await page.data('editValue')
- const editValueType = await page.data('editValueType')
- if (platformInfo.startsWith('web') && editValueType._value != 'String') {
- // 获取 ref 的 value 属性
- expect(editValue._value).toBe(valueTypeDefaultMap.get(editValueType._value))
- }
- }
- // 关闭弹窗
- const cancelBtn = await mask.$('.btn-cancel')
- await cancelBtn.tap()
- await page.waitFor(300)
- })
- it('5. 新增所有类型', async () => {
- const types = ['String', 'Number', 'Boolean', 'Object', 'Array']
- for (const type of types) {
- // 点击新建按钮
- const createBtn = await page.$('.btn-create')
- await createBtn.tap()
- await page.waitFor(300)
- // 获取弹窗元素
- const mask = await page.$('.dialog-mask')
- const keyInput = await mask.$('.edit-input')
- const valueTextarea = await mask.$('.edit-textarea')
- const saveBtn = await mask.$('.btn-save')
- const typeRadios = await mask.$$('.edit-type-radio')
- // 选择类型
- const typeIndex = types.indexOf(type)
- await typeRadios[typeIndex].tap()
- await page.waitFor(100)
- // 输入内容
- await keyInput.input(`test_${type.toLowerCase()}`)
- await valueTextarea.input(valueTypeDefaultMap.get(type))
- await saveBtn.tap()
- await page.waitFor(300)
- }
- // 验证所有类型都添加成功
- const list = await page.callMethod('getStorageList')
- if (!platformInfo.startsWith('mp')) {
- expect(list.length).toBe(types.length)
- }
- })
- it('6. 清空所有存储项', async () => {
- // 点击清空按钮
- const clearBtn = await page.$('.btn-clear')
- await clearBtn.tap()
- await page.waitFor(300)
- // 验证清空成功
- const list = await page.callMethod('getStorageList')
- expect(list.length).toBe(0)
- })
- })
|