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}