function getData(key = '') {
    return new Promise(async (resolve, reject) => {
        const data = await page.data()
        resolve(key ? data[key] : data)
    })
}

let page
beforeAll(async () => {
    page = await program.reLaunch('/pages/component/button/button')
    await page.waitFor(1000)
})

describe('Button.uvue', () => {
    it('click', async () => {
        const defaultBtn = await page.$('.default-button')
        const disabledBtn = await page.$('.disabled-button')
        expect(await getData('count')).toEqual(0)
        await defaultBtn.tap()
        expect(await getData('count')).toEqual(1)
        await disabledBtn.tap()
        expect(await getData('count')).toEqual(1)
    })
    it('length', async () => {
        const elements = await page.$$('.button')
        expect(elements.length).toBe(13)
    })
    it('text', async () => {
        const textBtn = await page.$('.text-button')
        expect(await textBtn.text()).toEqual('按钮')
        await page.setData({
            text: 'button'
        })
        // TODO 待修复
        expect(await textBtn.text()).toEqual('button')
    })
    it('type', async () => {
        const btn = await page.$('.test-button')
        expect(await btn.property('type')).toBe('primary')
        await page.setData({
            type: 'default'
        })
        await page.waitFor(500)
        expect(await btn.property('type')).toBe('default')
        await page.setData({
            type: 'warn'
        })
        await page.waitFor(500)
        expect(await btn.property('type')).toBe('warn')
    })
    it('size', async () => {
        const btn = await page.$('.test-button')
        expect(await btn.property('size')).toBe('default')
        await page.setData({
            size: 'mini'
        })
        await page.waitFor(500)
        expect(await btn.property('size')).toBe('mini')
    })
    it('plain', async () => {
        const btn = await page.$('.test-button')
        expect(await btn.property('plain')).toBe(false)
        await page.setData({
            plain: true
        })
        await page.waitFor(500)
        expect(await btn.property('plain')).toBe(true)
    })
    it('disabled', async () => {
        const btn = await page.$('.test-button')
        expect(await btn.property('disabled')).toBe(false)
        await page.setData({
            disabled: true
        })
        await page.waitFor(500)
        expect(await btn.property('disabled')).toBe(true)
    })
})