const isDom2 = process.env.UNI_APP_X_DOM2 === 'true'
const platformInfo = process.env.uniTestPlatformInfo.toLocaleLowerCase()
const isMP = platformInfo.startsWith('mp')
const HOME_PAGE_PATH = '/pages/index/index'
const MAIN_PAGE_PATH = '/pages/component-instance/props/page-props?name=page-props'
const OPTIONS_PAGE_PATH = '/pages/component-instance/props/page-props-options'
const COMPOSITION_PAGE_PATH = '/pages/component-instance/props/page-props-composition'
describe('page props', () => {
let page, originLifecycleNum
it('page as component', async () => {
page = await program.reLaunch(HOME_PAGE_PATH)
page.waitFor('view')
originLifecycleNum = await page.callMethod('pageGetLifeCycleNum')
await page.callMethod('pageSetLifeCycleNum', 0)
page = await program.reLaunch(MAIN_PAGE_PATH)
page.waitFor('view')
if (!isDom2) {
const optionsTitle = await page.$('#page-props-options-title');
expect(await optionsTitle.text()).toBe('page-props-options')
const optionsFrom = await page.$('#page-props-options-from');
expect(await optionsFrom.text()).toBe('page')
const optionsNumber = await page.$('#page-props-options-number');
expect(await optionsNumber.text()).toBe('10')
const optionsBoolean = await page.$('#page-props-options-boolean');
expect(await optionsBoolean.text()).toBe('true')
const optionsObject = await page.$('#page-props-options-object');
expect(await optionsObject.text()).toBe('{"c":10,"d":20}')
const optionsArray = await page.$('#page-props-options-array');
expect(await optionsArray.text()).toBe('[4,5,6]')
}
const compositionTitle = await page.$('#page-props-composition-title');
expect(await compositionTitle.text()).toBe('page-props-composition')
const compositionFrom = await page.$('#page-props-composition-from');
expect(await compositionFrom.text()).toBe('page')
const compositionNumber = await page.$('#page-props-composition-number');
expect(await compositionNumber.text()).toBe('10')
const compositionBoolean = await page.$('#page-props-composition-boolean');
expect(await compositionBoolean.text()).toBe('true')
const compositionObject = await page.$('#page-props-composition-object');
expect(await compositionObject.text()).toBe('{"c":10,"d":20}')
const compositionArray = await page.$('#page-props-composition-array');
expect(await compositionArray.text()).toBe('[4,5,6]')
const lifeCycleNum = await page.callMethod('pageGetLifeCycleNum')
if (isMP) {
expect(lifeCycleNum).toBe(isDom2 ? 37 : 41)
} else {
expect(lifeCycleNum).toBe(isDom2 ? 27 : 31)
}
await page.callMethod('pageSetLifeCycleNum', 0)
})
const test = async (pageType) => {
const goOptionsPageBtn = await page.$(`#go-${pageType}-page`)
await goOptionsPageBtn.tap()
await page.waitFor(1000)
page = await program.currentPage()
page.waitFor('view')
const optionsTitle = await page.$(`#page-props-${pageType}-title`);
expect(await optionsTitle.text()).toBe(`page-props-${pageType}`)
const optionsFrom = await page.$(`#page-props-${pageType}-from`);
expect(await optionsFrom.text()).toBe('page-navigateTo')
const optionsNumber = await page.$(`#page-props-${pageType}-number`);
expect(await optionsNumber.text()).toBe('1')
const optionsBoolean = await page.$(`#page-props-${pageType}-boolean`);
expect(await optionsBoolean.text()).toBe('false')
const optionsObject = await page.$(`#page-props-${pageType}-object`);
expect(await optionsObject.text()).toBe(pageType == 'options' ? '{"a":1,"b":2}' : '{"a":"a","b":"b"}')
const optionsArray = await page.$(`#page-props-${pageType}-array`);
expect(await optionsArray.text()).toBe(pageType == 'options' ? '[1,2,3]' : '["a","b","c"]')
let lifeCycleNum = await page.callMethod('pageGetLifeCycleNum')
expect(lifeCycleNum).toBe(pageType == 'options' ? 44 : 42)
await page.callMethod('pageSetLifeCycleNum', 0)
page = await program.navigateBack()
await page.waitFor('view')
lifeCycleNum = await page.callMethod('pageGetLifeCycleNum')
expect(lifeCycleNum).toBe(22)
await page.callMethod('pageSetLifeCycleNum', 0)
}
if (!isDom2) {
it('page props 选项式 API', async () => {
await test('options')
})
}
it('page props 组合式 API', async () => {
await test('composition')
})
afterAll(async () => {
page = await program.reLaunch(HOME_PAGE_PATH)
await page.waitFor('view')
await page.callMethod('pageSetLifeCycleNum', originLifecycleNum)
})
})