• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1import hilog from '@ohos.hilog';
2import TestRunner from '@ohos.application.testRunner'
3import AbilityDelegatorRegistry from '@ohos.application.abilityDelegatorRegistry'
4
5var abilityDelegator = undefined
6var abilityDelegatorArguments = undefined
7
8function translateParamsToString(parameters) {
9    const keySet = new Set([
10        '-s class', '-s notClass', '-s suite', '-s it',
11        '-s level', '-s testType', '-s size', '-s timeout',
12        '-s dryRun'
13    ])
14    let targetParams = '';
15    for (const key in parameters) {
16        if (keySet.has(key)) {
17            targetParams = `${targetParams} ${key} ${parameters[key]}`
18        }
19    }
20    return targetParams.trim()
21}
22
23async function onAbilityCreateCallback() {
24    hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO);
25    hilog.info(0x0000, 'testTag', '%{public}s', 'onAbilityCreateCallback');
26}
27
28async function addAbilityMonitorCallback(err: any) {
29    hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO);
30    hilog.info(0x0000, 'testTag', 'addAbilityMonitorCallback : %{public}s', JSON.stringify(err) ?? '');
31}
32
33export default class OpenHarmonyTestRunner implements TestRunner {
34    constructor() {
35    }
36
37    onPrepare() {
38        hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO);
39        hilog.info(0x0000, 'testTag', '%{public}s', 'OpenHarmonyTestRunner OnPrepare ');
40    }
41
42    async onRun() {
43        hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO);
44        hilog.info(0x0000, 'testTag', '%{public}s', 'OpenHarmonyTestRunner onRun run');
45        abilityDelegatorArguments = AbilityDelegatorRegistry.getArguments()
46        abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator()
47        var testAbilityName = abilityDelegatorArguments.bundleName + '.MainAbility'
48        let lMonitor = {
49            abilityName: testAbilityName,
50            onAbilityCreate: onAbilityCreateCallback,
51        };
52        abilityDelegator.addAbilityMonitor(lMonitor, addAbilityMonitorCallback)
53        var cmd = 'aa start -d 0 -a MainAbility ' + ' -b ' + abilityDelegatorArguments.bundleName
54        cmd += ' '+translateParamsToString(abilityDelegatorArguments.parameters)
55        var debug = abilityDelegatorArguments.parameters['-D']
56        if (debug == 'true')
57        {
58            cmd += ' -D'
59        }
60        hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO);
61        hilog.info(0x0000, 'testTag', 'cmd : %{public}s', cmd);
62        abilityDelegator.executeShellCommand(cmd,
63            (err: any, d: any) => {
64                hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO);
65                hilog.info(0x0000, 'testTag', 'executeShellCommand : err : %{public}s', JSON.stringify(err) ?? '');
66                hilog.info(0x0000, 'testTag', 'executeShellCommand : data : %{public}s', d.stdResult ?? '');
67                hilog.info(0x0000, 'testTag', 'executeShellCommand : data : %{public}s', d.exitCode ?? '');
68            })
69        hilog.info(0x0000, 'testTag', '%{public}s', 'OpenHarmonyTestRunner onRun end');
70    }
71}