234 行
6.4 KiB
JavaScript
234 行
6.4 KiB
JavaScript
const platformInfo = process.env.uniTestPlatformInfo.toLocaleLowerCase()
|
|
const isIOS = platformInfo.startsWith('ios')
|
|
const isMP = platformInfo.startsWith('mp')
|
|
const isWeb = platformInfo.startsWith('web')
|
|
const isHarmony = platformInfo.startsWith('harmony')
|
|
const isAndroid = platformInfo.startsWith('android')
|
|
const isAppWebView = process.env.UNI_AUTOMATOR_APP_WEBVIEW == 'true'
|
|
|
|
|
|
|
|
describe('component-native-web-view', () => {
|
|
if (isWeb || isAppWebView) {
|
|
it('web', async () => {
|
|
expect(1).toBe(1)
|
|
})
|
|
return
|
|
}
|
|
let page;
|
|
let start = 0;
|
|
beforeAll(async () => {
|
|
page = await program.reLaunch('/pages/component/web-view/web-view');
|
|
await page.waitFor(3000);
|
|
});
|
|
|
|
// 测试辅助函数
|
|
async function setPageData(newData) {
|
|
return await page.setData({ data: newData });
|
|
}
|
|
|
|
it('check_load_url', async () => {
|
|
expect(await page.data('data.loadError')).toBe(false)
|
|
});
|
|
|
|
it('test attr webview-styles', async () => {
|
|
await setPageData({
|
|
webview_progress_color: '#FF0'
|
|
});
|
|
await page.waitFor(100);
|
|
await page.callMethod('reload');
|
|
await page.waitFor(100);
|
|
await setPageData({
|
|
webview_progress_color: 'yellow'
|
|
});
|
|
await page.waitFor(100);
|
|
await page.callMethod('reload');
|
|
});
|
|
|
|
if (isMP) {
|
|
return
|
|
}
|
|
it('set auto test', async () => {
|
|
await setPageData({
|
|
autoTest: true
|
|
});
|
|
expect(1).toBe(1)
|
|
});
|
|
it('test touch event', async () => {
|
|
const windowInfo = await program.callUniMethod('getWindowInfo');
|
|
await program.tap({
|
|
x: 10,
|
|
y: windowInfo.safeAreaInsets.top + 44 + 10
|
|
});
|
|
await page.waitFor(500);
|
|
if (!isIOS && !isAndroid) {
|
|
expect(await page.data('data.isTouchEnable')).toBe(true);
|
|
}
|
|
|
|
await setPageData({
|
|
pointerEvents: 'none',
|
|
isTouchEnable: false
|
|
});
|
|
await page.waitFor(100);
|
|
await program.tap({
|
|
x: 10,
|
|
y: windowInfo.safeAreaInsets.top + 44 + 10
|
|
});
|
|
await page.waitFor(500);
|
|
if (!isIOS && !isHarmony && !isAndroid) {
|
|
expect(await page.data('data.isTouchEnable')).toBe(false);
|
|
}
|
|
await setPageData({
|
|
pointerEvents: 'auto'
|
|
});
|
|
});
|
|
|
|
it('test event loading load', async () => {
|
|
await page.callMethod('reload');
|
|
start = Date.now();
|
|
await page.waitFor(async () => {
|
|
return (await page.data('data.eventLoading')) || (Date.now() - start > 500);
|
|
});
|
|
if (isIOS) {
|
|
const platformInfo = process.env.uniTestPlatformInfo.toLocaleLowerCase()
|
|
if (
|
|
platformInfo.indexOf('14.5') != -1 ||
|
|
platformInfo.indexOf('13.7') != -1 ||
|
|
platformInfo.indexOf('12.4') != -1
|
|
) {
|
|
expect(1).toBe(1)
|
|
return
|
|
}
|
|
expect(await page.data('data.eventLoading')).toEqual({
|
|
"tagName": "WEB-VIEW",
|
|
type: 'loading',
|
|
src: 'https://www.dcloud.io/'
|
|
});
|
|
} else {
|
|
expect(await page.data('data.eventLoading')).toEqual({
|
|
tagName: 'WEB-VIEW',
|
|
type: 'loading',
|
|
src: 'https://www.dcloud.io/'
|
|
});
|
|
}
|
|
start = Date.now();
|
|
await page.waitFor(async () => {
|
|
return (await page.data('data.eventLoad')) || (Date.now() - start > 5000);
|
|
});
|
|
expect(await page.data('data.eventLoad')).toEqual({
|
|
tagName: 'WEB-VIEW',
|
|
type: 'load',
|
|
src: 'https://www.dcloud.io/',
|
|
url: 'https://www.dcloud.io/'
|
|
});
|
|
});
|
|
|
|
it('test event contentheightchange', async () => {
|
|
if (!isAndroid && !isIOS && !isHarmony) {
|
|
expect(1).toBe(1);
|
|
return;
|
|
}
|
|
expect(await page.callMethod('getContentHeight')).toBeGreaterThan(0);
|
|
start = Date.now();
|
|
await page.waitFor(async () => {
|
|
return (await page.data('data.eventContentHeightChange')) || (Date.now() - start > 500);
|
|
});
|
|
expect(await page.data('data.eventContentHeightChange')).toEqual({
|
|
tagName: 'WEB-VIEW',
|
|
type: 'contentheightchange',
|
|
isValidHeight: true
|
|
});
|
|
});
|
|
|
|
it('test event error', async () => {
|
|
const infos = process.env.uniTestPlatformInfo.split(' ');
|
|
const version = parseInt(infos[infos.length - 1]);
|
|
if (isAndroid && version > 5) {
|
|
await setPageData({
|
|
src: 'https://www.dclou.io/uni-app-x'
|
|
});
|
|
start = Date.now();
|
|
await page.waitFor(async () => {
|
|
return (await page.data('data.eventError')) || (Date.now() - start > 5000);
|
|
});
|
|
expect(await page.data('data.eventError')).toEqual({
|
|
tagName: 'WEB-VIEW',
|
|
type: 'error',
|
|
errCode: 100002,
|
|
errMsg: 'page error',
|
|
url: 'https://www.dclou.io',
|
|
fullUrl: 'https://www.dclou.io/uni-app-x',
|
|
src: 'https://www.dclou.io/uni-app-x'
|
|
});
|
|
}
|
|
await setPageData({
|
|
autoTest: false
|
|
});
|
|
});
|
|
|
|
it('checkNativeWebView', async () => {
|
|
const platformInfo = process.env.uniTestPlatformInfo.toLocaleLowerCase()
|
|
if (
|
|
platformInfo.indexOf('14.5') != -1 ||
|
|
platformInfo.indexOf('13.7') != -1 ||
|
|
platformInfo.indexOf('12.4') != -1
|
|
) {
|
|
expect(1).toBe(1)
|
|
return
|
|
}
|
|
await page.waitFor(300);
|
|
const has = await page.callMethod('checkNativeWebView')
|
|
expect(has).toBe(true)
|
|
})
|
|
|
|
it('checkLoadingCount', async () => {
|
|
if (
|
|
platformInfo.indexOf('14.5') != -1 ||
|
|
platformInfo.indexOf('13.7') != -1 ||
|
|
platformInfo.indexOf('12.4') != -1
|
|
) {
|
|
expect(1).toBe(1)
|
|
return
|
|
}
|
|
await page.callMethod('checkLoadingCount')
|
|
await page.waitFor(300);
|
|
const has = await page.callMethod('checkNativeWebView')
|
|
if (has) {
|
|
if (isHarmony) {
|
|
expect(await page.data('data.loadingCount')).toBeGreaterThanOrEqual(1);
|
|
} else {
|
|
expect(await page.data('data.loadingCount')).toBe(1);
|
|
}
|
|
} else {
|
|
expect(await page.data('data.loadingCount')).toBe(0);
|
|
}
|
|
})
|
|
|
|
it('test lodaData', async () => {
|
|
await page.callMethod('loadData');
|
|
await page.waitFor(1000);
|
|
const image = await program.screenshot({ fullPage: true });
|
|
expect(image).toSaveImageSnapshot();
|
|
});
|
|
|
|
it('test half screen toggle', async () => {
|
|
// 点击宽窄屏切换按钮
|
|
const toggleButton = await page.$('#half-screen-toggle');
|
|
expect(toggleButton).toBeTruthy();
|
|
|
|
await toggleButton.tap();
|
|
await page.waitFor(500);
|
|
|
|
// 点击后截图
|
|
const image = await program.screenshot({
|
|
fullPage: true,
|
|
});
|
|
expect(image).toSaveImageSnapshot();
|
|
|
|
// 截图点击恢复
|
|
await page.waitFor(200);
|
|
await toggleButton.tap();
|
|
|
|
});
|
|
});
|