169 行
5.5 KiB
JavaScript
169 行
5.5 KiB
JavaScript
const platformInfo = process.env.uniTestPlatformInfo.toLocaleLowerCase()
|
|
const isMP = platformInfo.startsWith('mp')
|
|
const isWeb = platformInfo.startsWith('web')
|
|
const isDom2 = process.env.UNI_APP_X_DOM2 === "true"
|
|
|
|
describe('nodes-info', () => {
|
|
if (isMP) {
|
|
it('skip', () => {
|
|
expect(1).toBe(1)
|
|
})
|
|
return
|
|
}
|
|
|
|
const PAGE_PATH = '/pages/API/create-selector-query/create-selector-query'
|
|
const RECT_LEFT = 15;
|
|
const RECT_WIDTH = 150;
|
|
const RECT_HEIGHT = 100;
|
|
|
|
let page
|
|
beforeAll(async () => {
|
|
page = await program.reLaunch(PAGE_PATH)
|
|
await page.waitFor('view')
|
|
})
|
|
|
|
// 查询到的元素涉及设备精度问题,截图对比差异较大,不在截图对比,已有值断言比较
|
|
// it("screenshot", async () => {
|
|
// const image = await program.screenshot({ fullPage: true });
|
|
// expect(image).toSaveImageSnapshot();
|
|
// })
|
|
|
|
it('get-root-node-info', async () => {
|
|
// 测试 class 选择器
|
|
await getRootNode('.page')
|
|
|
|
// 测试 id 选择器
|
|
await getRootNode('#page')
|
|
|
|
// 测试 标签 选择器
|
|
// await getRootNode('page')
|
|
})
|
|
it('get-node-info', async () => {
|
|
const btnGetNodeInfo = await page.$('.btn-get-node-info')
|
|
|
|
await btnGetNodeInfo.tap()
|
|
await page.waitFor(50)
|
|
|
|
const data = await page.data('data')
|
|
|
|
// TODO 和浏览器的计算存在差异
|
|
const nodeInfo = data.nodeInfoList[0]
|
|
expect(Math.round(nodeInfo.left)).toBe(RECT_LEFT)
|
|
expect(Math.round(nodeInfo.width)).toBe(RECT_WIDTH)
|
|
expect(Math.round(nodeInfo.height)).toBe(RECT_HEIGHT)
|
|
})
|
|
it('get-all-node-info', async () => {
|
|
const btnGetAllNodeInfo = await page.$('.btn-get-all-node-info')
|
|
|
|
await btnGetAllNodeInfo.tap()
|
|
await page.waitFor(50)
|
|
|
|
const data = await page.data('data')
|
|
|
|
const nodeInfo1 = data.nodeInfoList[0]
|
|
expect(Math.round(nodeInfo1.left)).toBe(RECT_LEFT)
|
|
expect(nodeInfo1.top > 220).toBe(true)
|
|
expect(Math.round(nodeInfo1.width)).toBe(RECT_WIDTH)
|
|
expect(Math.round(nodeInfo1.height)).toBe(RECT_HEIGHT)
|
|
|
|
const nodeInfo2 = data.nodeInfoList[1]
|
|
expect(nodeInfo2.left > 180).toBe(true)
|
|
expect(nodeInfo2.top > 220).toBe(true)
|
|
expect(Math.round(nodeInfo2.width)).toBe(RECT_WIDTH)
|
|
expect(Math.round(nodeInfo2.height)).toBe(RECT_HEIGHT)
|
|
})
|
|
if(!isMP) {
|
|
// 小程序端启用了虚拟host,无法获取到子组件
|
|
it('get-node-info-child', async () => {
|
|
const child = await page.$('.node-child')
|
|
const childData = await child.data('data')
|
|
console.log('get-node-info-child.childData.top', childData.top);
|
|
expect(childData.top > 100).toBe(true)
|
|
})
|
|
}
|
|
|
|
it('multi-child', async () => {
|
|
const pageData = await page.data('data')
|
|
console.log('multi-child.pageData', pageData)
|
|
expect(pageData.selectCount).toBe(1)
|
|
expect(pageData.selectAllCount).toBe(2)
|
|
})
|
|
|
|
// #ifdef APP
|
|
//检测onResize获取BoundingClientRect信息是否有效
|
|
/* it('check_resizeRectValid', async () => {
|
|
const resizeRectValid = await page.data('resizeRectValid')
|
|
expect(resizeRectValid).toBe(true)
|
|
}) */
|
|
// #endif
|
|
|
|
if (!(isWeb || isMP)) {
|
|
it('test fields', async () => {
|
|
const pageData = await page.data('data')
|
|
expect(pageData.fieldsResultContainNode).toBe(true)
|
|
})
|
|
|
|
it('test node', async () => {
|
|
const pageData = await page.data('data')
|
|
expect(pageData.nodeResultContainNode).toBe(true)
|
|
})
|
|
}
|
|
|
|
// 测试 text 组件查询
|
|
it('get-text-node-info', async () => {
|
|
await page.callMethod('getTextNodeInfo')
|
|
await page.waitFor(100)
|
|
const textNodeInfo = await page.data('data.textNodeInfo')
|
|
expect(textNodeInfo).not.toBe(null)
|
|
expect(textNodeInfo.left).toBeCloseTo(15, 0);
|
|
expect(Math.round(textNodeInfo.right) > 300).toBe(true)
|
|
expect(Math.round(textNodeInfo.top) > 200).toBe(true)
|
|
expect(Math.round(textNodeInfo.bottom) > 200).toBe(true)
|
|
expect(Math.round(textNodeInfo.width) > 300).toBe(true)
|
|
expect(Math.round(textNodeInfo.height) > 30).toBe(true)
|
|
})
|
|
|
|
// 测试 image 组件查询
|
|
it('get-image-node-info', async () => {
|
|
await page.callMethod('getImageNodeInfo')
|
|
await page.waitFor(100)
|
|
const imageNodeInfo = await page.data('data.imageNodeInfo')
|
|
expect(imageNodeInfo).not.toBe(null)
|
|
expect(imageNodeInfo.left).toBeCloseTo(15, 0);
|
|
expect(imageNodeInfo.right).toBeCloseTo(115, 0);
|
|
expect(Math.round(imageNodeInfo.top) > 380).toBe(true)
|
|
expect(Math.round(imageNodeInfo.bottom) > 480).toBe(true)
|
|
expect(imageNodeInfo.width).toBeCloseTo(100, 0);
|
|
expect(imageNodeInfo.height).toBeCloseTo(100, 0)
|
|
})
|
|
|
|
// 测试 scroll-view 组件查询
|
|
it('get-scroll-view-node-info', async () => {
|
|
await page.callMethod('getScrollViewNodeInfo')
|
|
await page.waitFor(100)
|
|
const scrollViewNodeInfo = await page.data('data.scrollViewNodeInfo')
|
|
expect(scrollViewNodeInfo).not.toBe(null)
|
|
expect(scrollViewNodeInfo.left).toBeCloseTo(15, 0);
|
|
expect(scrollViewNodeInfo.right).toBeCloseTo(315, 0);
|
|
expect(Math.round(scrollViewNodeInfo.top) > 560).toBe(true)
|
|
expect(Math.round(scrollViewNodeInfo.bottom) > 660).toBe(true)
|
|
expect(scrollViewNodeInfo.width).toBeCloseTo(300, 0);
|
|
expect(scrollViewNodeInfo.height).toBeCloseTo(100, 0)
|
|
})
|
|
})
|
|
|
|
async function getRootNode(selector) {
|
|
const page = await program.currentPage()
|
|
|
|
await page.setData({
|
|
data:{rootNodeInfo: null,}
|
|
})
|
|
await page.waitFor(100)
|
|
|
|
await page.callMethod('getRootNodeInfo', selector)
|
|
await page.waitFor(100)
|
|
|
|
const data = await page.data('data')
|
|
expect(data.rootNodeInfo != null).toBe(true)
|
|
}
|