diff --git a/runtime/main/extend/systemplugin/napi/index.js b/runtime/main/extend/systemplugin/napi/index.js index 572b586050ecae015e8228af6aeb00de95830ac9..a27bc3e888cab8968c94f9665dcf1b817c939434 100644 --- a/runtime/main/extend/systemplugin/napi/index.js +++ b/runtime/main/extend/systemplugin/napi/index.js @@ -166,6 +166,7 @@ import { mockMouseEvent } from './ohos_multimodalInput_mouseEvent' import { mockTouchEvent } from './ohos_multimodalInput_touchEvent' import { mockUiAppearance } from './ohos_uiAppearance' import { mockContinationManager } from './ohos_continuation_continuationManager' +import { mockUiTest } from './ohos_uitest' export function mockRequireNapiFun() { global.requireNapi = function (...args) { switch (args[0]) { diff --git a/runtime/main/extend/systemplugin/napi/ohos_uitest.js b/runtime/main/extend/systemplugin/napi/ohos_uitest.js new file mode 100644 index 0000000000000000000000000000000000000000..967e44bbf97734acbd92995450e005b6943dbfd9 --- /dev/null +++ b/runtime/main/extend/systemplugin/napi/ohos_uitest.js @@ -0,0 +1,493 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import {paramMock} from '../utils' + +const warnMessage = + ' interface mocked in the Previewer. How this interface works on the' + + ' Previewer may be different from that on a real device.' + +export const ResizeDirection = { + LEFT: 0, + RIGHT: 1, + UP: 2, + DOWN: 3, + LEFT_UP: 4, + LEFT_DOWN: 5, + RIGHT_UP: 6, + RIGHT_DOWN: 7 +} + +export const MatchPattern = { + EQUALS: 0, + CONTAINS: 1, + STARTS_WITH: 2, + ENDS_WITH: 3 +} + +export const WindowMode = { + FULLSCREEN: 0, + PRIMARY: 1, + SECONDARY: 2, + FLOATING: 3 +} + +export const Point = { + X: '[PC Preview] unknown X', + Y: '[PC Preview] unknown Y' +} + +export const Rect = { + leftX: '[PC Preview] unknown leftX', + topY: '[PC Preview] unknown topY', + rightX: '[PC Preview] unknown rightX', + bottomY: '[PC Preview] unknown bottomY' +} + +export const WindowFilter = { + bundleName: '[PC Preview] unknown bundleName', + title: '[PC Preview] unknown title', + focused: '[PC Preview] unknown focused', + actived: '[PC Preview] unknown actived' +} + +const ByClass = class ByMock { + constructor() { + console.warn('uitest.By.constructor' + warnMessage); + this.id = function(...args) { + console.warn('uitest.By.id' + warnMessage) + return new ByClass() + }; + this.text = function(...args) { + console.warn('uitest.By.text' + warnMessage) + return new ByClass() + }; + this.key = function(...args) { + console.warn('uitest.By.key' + warnMessage) + return new ByClass() + }; + this.type = function(...args) { + console.warn('uitest.By.type' + warnMessage) + return new ByClass() + }; + this.enabled = function(...args) { + console.warn('uitest.By.enabled' + warnMessage) + return new ByClass() + }; + this.focused = function(...args) { + console.warn('uitest.By.focused' + warnMessage) + return new ByClass() + }; + this.selected = function(...args) { + console.warn('uitest.By.selected' + warnMessage) + return new ByClass() + }; + this.clickable = function(...args) { + console.warn('uitest.By.clickable' + warnMessage) + return new ByClass() + }; + this.enabled = function(...args) { + console.warn('uitest.By.enabled' + warnMessage) + return new ByClass() + }; + this.longClickable = function(...args) { + console.warn('uitest.By.longClickable' + warnMessage) + return new ByClass() + }; + this.scrollable = function(...args) { + console.warn('uitest.By.scrollable' + warnMessage) + return new ByClass() + }; + this.checkable = function(...args) { + console.warn('uitest.By.checkable' + warnMessage) + return new ByClass() + }; + this.checked = function(...args) { + console.warn('uitest.By.checked' + warnMessage) + return new ByClass() + }; + this.isBefore = function(...args) { + console.warn('uitest.By.isBefore' + warnMessage) + return new ByClass() + }; + this.isAfter = function(...args) { + console.warn('uitest.By.isAfter' + warnMessage) + return new ByClass() + }; + } +} + +const UiDriverClass = class UiDriverMock { + constructor() { + console.warn('uitest.UiDriver.constructor' + warnMessage); + this.delayMs = function(...args) { + console.warn('uitest.UiDriver.delayMs' + warnMessage) + return new Promise((resolve) => { + resolve() + }); + }; + this.findComponent = function(...args) { + console.warn('uitest.UiDriver.findComponent' + warnMessage) + return new Promise((resolve) => { + resolve(new UiComponentClass()) + }); + }; + this.findWindow = function(...args) { + console.warn('uitest.UiDriver.findWindow' + warnMessage) + return new Promise((resolve) => { + resolve(new UiWindowClass()) + }); + }; + this.findComponents = function(...args) { + console.warn('uitest.UiDriver.findComponents' + warnMessage) + return new Promise((resolve) => { + resolve(new Array(new UiComponentClass())) + }); + }; + this.waitForComponent = function(...args) { + console.warn('uitest.UiDriver.waitForComponent' + warnMessage) + return new Promise((resolve) => { + resolve(new UiComponentClass()) + }); + }; + this.screenCap = function(...args) { + console.warn('uitest.UiDriver.screenCap' + warnMessage) + return new Promise((resolve) => { + resolve(paramMock.paramBooleanMock) + }); + }; + this.assertComponentExist = function(...args) { + console.warn('uitest.UiDriver.assertComponentExist' + warnMessage) + return new Promise((resolve) => { + resolve() + }); + }; + this.pressBack = function(...args) { + console.warn('uitest.UiDriver.pressBack' + warnMessage) + return new Promise((resolve) => { + resolve() + }); + }; + this.triggerKey = function(...args) { + console.warn('uitest.UiDriver.triggerKey' + warnMessage) + return new Promise((resolve) => { + resolve() + }); + }; + this.triggerCombineKeys = function(...args) { + console.warn('uitest.UiDriver.triggerCombineKeys' + warnMessage) + return new Promise((resolve) => { + resolve() + }); + }; + this.click = function(...args) { + console.warn('uitest.UiDriver.click' + warnMessage) + return new Promise((resolve) => { + resolve() + }); + }; + this.longClick = function(...args) { + console.warn('uitest.UiDriver.longClick' + warnMessage) + return new Promise((resolve) => { + resolve() + }); + }; + this.doubleClick = function(...args) { + console.warn('uitest.UiDriver.doubleClick' + warnMessage) + return new Promise((resolve) => { + resolve() + }); + }; + this.swipe = function(...args) { + console.warn('uitest.UiDriver.swipe' + warnMessage) + return new Promise((resolve) => { + resolve() + }); + }; + this.drag = function(...args) { + console.warn('uitest.UiDriver.drag' + warnMessage) + return new Promise((resolve) => { + resolve() + }); + }; + } +} + +UiDriverClass.create = function () { + console.warn('uitest.UiDriver.create' + warnMessage) + return new UiDriverClass() +} + +const UiComponentClass = class UiComponentMock { + constructor() { + console.warn('uitest.UiComponent.constructor' + warnMessage); + this.getId = function(...args) { + console.warn('uitest.UiComponent.getId' + warnMessage) + return new Promise((resolve) => { + resolve(paramMock.paramNumberMock) + }); + }; + this.getText = function(...args) { + console.warn('uitest.UiComponent.getText' + warnMessage) + return new Promise((resolve) => { + resolve(paramMock.paramStringMock) + }); + }; + this.getKey = function(...args) { + console.warn('uitest.UiComponent.getKey' + warnMessage) + return new Promise((resolve) => { + resolve(paramMock.paramStringMock) + }); + }; + this.getType = function(...args) { + console.warn('uitest.UiComponent.getType' + warnMessage) + return new Promise((resolve) => { + resolve(paramMock.paramStringMock) + }); + }; + this.isEnabled = function(...args) { + console.warn('uitest.UiComponent.isEnabled' + warnMessage) + return new Promise((resolve) => { + resolve(paramMock.paramBooleanMock) + }); + }; + this.isFocused = function(...args) { + console.warn('uitest.UiComponent.isFocused' + warnMessage) + return new Promise((resolve) => { + resolve(paramMock.paramBooleanMock) + }); + }; + this.isSelected = function(...args) { + console.warn('uitest.UiComponent.isSelected' + warnMessage) + return new Promise((resolve) => { + resolve(paramMock.paramBooleanMock) + }); + }; + this.isClickable = function(...args) { + console.warn('uitest.UiComponent.isClickable' + warnMessage) + return new Promise((resolve) => { + resolve(paramMock.paramBooleanMock) + }); + }; + this.isLongClickable = function(...args) { + console.warn('uitest.UiComponent.isLongClickable' + warnMessage) + return new Promise((resolve) => { + resolve(paramMock.paramBooleanMock) + }); + }; + this.isScrollable = function(...args) { + console.warn('uitest.UiComponent.isScrollable' + warnMessage) + return new Promise((resolve) => { + resolve(paramMock.paramBooleanMock) + }); + }; + this.isCheckable = function(...args) { + console.warn('uitest.UiComponent.isCheckable' + warnMessage) + return new Promise((resolve) => { + resolve(paramMock.paramBooleanMock) + }); + }; + this.isChecked = function(...args) { + console.warn('uitest.UiComponent.isChecked' + warnMessage) + return new Promise((resolve) => { + resolve(paramMock.paramBooleanMock) + }); + }; + this.getBounds = function(...args) { + console.warn('uitest.UiComponent.getBounds' + warnMessage) + return new Promise((resolve) => { + resolve(Rect) + }); + }; + this.getBoundsCenter = function(...args) { + console.warn('uitest.UiComponent.getBoundsCenter' + warnMessage) + return new Promise((resolve) => { + resolve(Point) + }); + }; + this.click = function(...args) { + console.warn('uitest.UiComponent.click' + warnMessage) + return new Promise((resolve) => { + resolve() + }); + }; + this.longClick = function(...args) { + console.warn('uitest.UiComponent.longClick' + warnMessage) + return new Promise((resolve) => { + resolve() + }); + }; + this.doubleClick = function(...args) { + console.warn('uitest.UiComponent.doubleClick' + warnMessage) + return new Promise((resolve) => { + resolve() + }); + }; + this.scrollToTop = function(...args) { + console.warn('uitest.UiComponent.scrollToTop' + warnMessage) + return new Promise((resolve) => { + resolve() + }); + }; + this.scrollToBottom = function(...args) { + console.warn('uitest.UiComponent.scrollToBottom' + warnMessage) + return new Promise((resolve) => { + resolve() + }); + }; + this.inputText = function(...args) { + console.warn('uitest.UiComponent.inputText' + warnMessage) + return new Promise((resolve) => { + resolve() + }); + }; + this.clearText = function(...args) { + console.warn('uitest.UiComponent.clearText' + warnMessage) + return new Promise((resolve) => { + resolve() + }); + }; + this.scrollSearch = function(...args) { + console.warn('uitest.UiComponent.scrollSearch' + warnMessage) + return new Promise((resolve) => { + resolve(new UiComponentClass()) + }); + }; + this.dragTo = function(...args) { + console.warn('uitest.UiComponent.dragTo' + warnMessage) + return new Promise((resolve) => { + resolve() + }); + }; + this.pinchOut = function(...args) { + console.warn('uitest.UiComponent.pinchOut' + warnMessage) + return new Promise((resolve) => { + resolve() + }); + }; + this.pinchIn = function(...args) { + console.warn('uitest.UiComponent.pinchIn' + warnMessage) + return new Promise((resolve) => { + resolve() + }); + }; + } +} + +const UiWindowClass = class UiWindowMock { + constructor() { + console.warn('uitest.UiWindow.constructor' + warnMessage); + this.getBundleName = function(...args) { + console.warn('uitest.UiWindow.getBundleName' + warnMessage) + return new Promise((resolve) => { + resolve(paramMock.paramStringMock) + }); + }; + this.getBounds = function(...args) { + console.warn('uitest.UiWindow.getBounds' + warnMessage) + return new Promise((resolve) => { + resolve(Rect) + }); + }; + this.getTitle = function(...args) { + console.warn('uitest.UiWindow.getTitle' + warnMessage) + return new Promise((resolve) => { + resolve(paramMock.paramStringMock) + }); + }; + this.getWindowMode = function(...args) { + console.warn('uitest.UiWindow.getWindowMode' + warnMessage) + return new Promise((resolve) => { + resolve(WindowMode) + }); + }; + this.isFocused = function(...args) { + console.warn('uitest.UiWindow.isFocused' + warnMessage) + return new Promise((resolve) => { + resolve(paramMock.paramBooleanMock) + }); + }; + this.isActived = function(...args) { + console.warn('uitest.UiWindow.isActived' + warnMessage) + return new Promise((resolve) => { + resolve(paramMock.paramBooleanMock) + }); + }; + this.focus = function(...args) { + console.warn('uitest.UiWindow.focus' + warnMessage) + return new Promise((resolve) => { + resolve(paramMock.paramBooleanMock) + }); + }; + this.moveTo = function(...args) { + console.warn('uitest.UiWindow.moveTo' + warnMessage) + return new Promise((resolve) => { + resolve(paramMock.paramBooleanMock) + }); + }; + this.resize = function(...args) { + console.warn('uitest.UiWindow.resize' + warnMessage) + return new Promise((resolve) => { + resolve(paramMock.paramBooleanMock) + }); + }; + this.split = function(...args) { + console.warn('uitest.UiWindow.split' + warnMessage) + return new Promise((resolve) => { + resolve(paramMock.paramBooleanMock) + }); + }; + this.maximize = function(...args) { + console.warn('uitest.UiWindow.maximize' + warnMessage) + return new Promise((resolve) => { + resolve(paramMock.paramBooleanMock) + }); + }; + this.resume = function(...args) { + console.warn('uitest.UiWindow.resume' + warnMessage) + return new Promise((resolve) => { + resolve(paramMock.paramBooleanMock) + }); + }; + this.minimize = function(...args) { + console.warn('uitest.UiWindow.minimize' + warnMessage) + return new Promise((resolve) => { + resolve(paramMock.paramBooleanMock) + }); + }; + this.close = function(...args) { + console.warn('uitest.UiWindow.close' + warnMessage) + return new Promise((resolve) => { + resolve(paramMock.paramBooleanMock) + }); + }; + }; +} + +export function mockUiTest() { + const module = { + ResizeDirection: ResizeDirection, + MatchPattern: MatchPattern, + WindowMode: WindowMode, + Point: Point, + Rect: Rect, + WindowFilter: WindowFilter, + BY: new ByClass(), + UiDriver: UiDriverClass, + UiComponent: UiComponentClass, + UiWindow: UiWindowClass + }; + return module +} \ No newline at end of file