1/* 2* Copyright (C) 2023 Huawei Device Co., Ltd. 3* Licensed under the Apache License, Version 2.0 (the "License"); 4* you may not use this file except in compliance with the License. 5* You may obtain a copy of the License at 6* 7* http://www.apache.org/licenses/LICENSE-2.0 8* 9* Unless required by applicable law or agreed to in writing, software 10* distributed under the License is distributed on an "AS IS" BASIS, 11* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12* See the License for the specific language governing permissions and 13* limitations under the License. 14*/ 15 16import { afterAll, afterEach, beforeAll, beforeEach, describe, expect, it } from '@ohos/hypium' 17import { Driver, MatchPattern, ON } from '@ohos.UiTest' 18import AbilityDelegatorRegistry from '@ohos.app.ability.abilityDelegatorRegistry' 19import Log from './Logger' 20 21export default function abilityTest() { 22 const BUNDLE = 'MediaController_'; 23 let driver = Driver.create(); 24 25 describe('ActsAbilityTest', () => { 26 // Defines a test suite. Two parameters are supported: test suite name and test suite function. 27 beforeAll(() => { 28 // Presets an action, which is performed only once before all test cases of the test suite start. 29 // This API supports only one parameter: preset action function. 30 }) 31 beforeEach(() => { 32 // Presets an action, which is performed before each unit test case starts. 33 // The number of execution times is the same as the number of test cases defined by **it**. 34 // This API supports only one parameter: preset action function. 35 }) 36 afterEach(() => { 37 // Presets a clear action, which is performed after each unit test case ends. 38 // The number of execution times is the same as the number of test cases defined by **it**. 39 // This API supports only one parameter: clear action function. 40 }) 41 afterAll(() => { 42 // Presets a clear action, which is performed after all test cases of the test suite end. 43 // This API supports only one parameter: clear action function. 44 }) 45 46 /** 47 * Start ability 48 */ 49 it(BUNDLE + 'StartAbility_001', 0, async (done: Function) => { 50 Log.info(BUNDLE + `StartAbility_001 begin`); 51 let abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator(); 52 try { 53 await abilityDelegator.startAbility({ 54 bundleName: 'com.samples.mediacontroller', 55 abilityName: 'EntryAbility' 56 }) 57 expect(true).assertTrue(); 58 } catch (error) { 59 Log.info(`Failed to start ability, error info: ${error}`); 60 expect().assertFail(); 61 } 62 Log.info(BUNDLE + `StartAbility_001 end`); 63 done(); 64 }) 65 66 /** 67 * [PresentPage] 68 * After start the ability, check if text elements exist 69 */ 70 it(BUNDLE + 'CheckPageElement_001', 0, async (done: Function) => { 71 Log.info(BUNDLE + `CheckPageElement_001 begin`); 72 try { 73 driver = Driver.create(); 74 await driver.delayMs(1000); 75 await driver.assertComponentExist(ON.id('Title')); 76 await driver.assertComponentExist(ON.id('Artist')); 77 await driver.assertComponentExist(ON.id('CurrentImage')); 78 expect(true).assertTrue(); 79 } catch (error) { 80 Log.info(`Failed to get text elements, error info: ${error}`); 81 expect().assertFail(); 82 } 83 Log.info(BUNDLE + `CheckPageElement_001 end`); 84 done(); 85 }) 86 87 /** 88 * [PresentPage] 89 * After start the ability, check if Button elements exist 90 */ 91 it(BUNDLE + 'CheckPageElement_002', 0, async (done: Function) => { 92 Log.info(BUNDLE + `CheckPageElement_002 begin`); 93 try { 94 await driver.delayMs(1000); 95 await driver.assertComponentExist(ON.id('Previous')); 96 await driver.assertComponentExist(ON.id('PlayOrPause:false')); 97 await driver.assertComponentExist(ON.id('Next')); 98 expect(true).assertTrue(); 99 } catch (error) { 100 Log.info(`Failed to get button elements, error info: ${error}`); 101 expect().assertFail(); 102 } 103 Log.info(BUNDLE + `CheckPageElement_002 end`); 104 done(); 105 }) 106 107 /** 108 * [PresentPage] 109 * Click PlayOrPause button 110 */ 111 it(BUNDLE + 'PlayThenPause_001', 0, async (done: Function) => { 112 Log.info(BUNDLE + `PlayThenPause_001 begin`); 113 try { 114 await driver.delayMs(1000); 115 let playOrPauseButtonFalse = await driver.findComponent(ON.id('PlayOrPause:false')); 116 await playOrPauseButtonFalse.click(); 117 await driver.assertComponentExist(ON.id('PlayOrPause:true')); 118 let playOrPauseButtonTrue = await driver.findComponent(ON.id('PlayOrPause:true')); 119 await playOrPauseButtonTrue.click(); 120 await driver.assertComponentExist(ON.id('PlayOrPause:false')); 121 } catch (error) { 122 Log.info(`Failed to get all page element, error info: ${error}`); 123 expect().assertFail(); 124 } 125 Log.info(BUNDLE + `PlayThenPause_001 end`); 126 done(); 127 }) 128 129 /** 130 * [PresentPage] 131 * Click previous button 132 */ 133 it(BUNDLE + 'PreviousMusic_001', 0, async (done: Function) => { 134 Log.info(BUNDLE + `PreviousMusic_001 begin`); 135 try { 136 await driver.delayMs(1000); 137 let titleText = await driver.findComponent(ON.id('Title')); 138 let currentTitle = await titleText.getText(); 139 let previousButton = await driver.findComponent(ON.id('Previous')); 140 await previousButton.click(); 141 await driver.delayMs(1000); 142 let previousTitle = await titleText.getText(); 143 expect(currentTitle !== previousTitle).assertTrue(); 144 } catch (error) { 145 Log.info(`Failed to play previous music, error info: ${error}`); 146 expect().assertFail(); 147 } 148 Log.info(BUNDLE + `PreviousMusic_001 end`); 149 done(); 150 }) 151 152 /** 153 * [PresentPage] 154 * Click next button 155 */ 156 it(BUNDLE + 'NextMusic_001', 0, async (done: Function) => { 157 Log.info(BUNDLE + `NextMusic_001 begin`); 158 try { 159 await driver.delayMs(1000); 160 let titleText = await driver.findComponent(ON.id('Title')); 161 let currentTitle = await titleText.getText(); 162 let nextButton = await driver.findComponent(ON.id('Next')); 163 await nextButton.click(); 164 await driver.delayMs(1000); 165 let nextTitle = await titleText.getText(); 166 expect(currentTitle !== nextTitle).assertTrue(); 167 } catch (error) { 168 Log.info(`Failed to play next music, error info: ${error}`); 169 expect().assertFail(); 170 } 171 Log.info(BUNDLE + `NextMusic_001 end`); 172 done(); 173 }) 174 175 /** 176 * [PresentPage] 177 * Click show lyric button 178 */ 179 it(BUNDLE + 'ShowLyric_001', 0, async (done: Function) => { 180 Log.info(BUNDLE + `ShowLyric_001 begin`); 181 try { 182 await driver.delayMs(1000); 183 let lyricButton = await driver.findComponent(ON.id('Lyric')); 184 await lyricButton.click(); 185 await driver.assertComponentExist(ON.id('LyricText')); 186 } catch (error) { 187 Log.info(`Failed to show lyric, error info: ${error}`); 188 expect().assertFail(); 189 } 190 Log.info(BUNDLE + `ShowLyric_001 end`); 191 done(); 192 }) 193 194 /** 195 * [PresentPage] 196 * Click show queue item button 197 */ 198 it(BUNDLE + 'ShowQueueItem_001', 0, async (done: Function) => { 199 Log.info(BUNDLE + `ShowQueueItem_001 begin`); 200 try { 201 await driver.delayMs(1000); 202 let lyricButton = await driver.findComponent(ON.id('ShowQueue')); 203 await lyricButton.click(); 204 await driver.assertComponentExist(ON.id('SecondPanel')); 205 await driver.assertComponentExist(ON.id('FirstMusicInQueue')); 206 } catch (error) { 207 Log.info(`Failed to show queue item, error info: ${error}`); 208 expect().assertFail(); 209 } 210 Log.info(BUNDLE + `ShowQueueItem_001 end`); 211 done(); 212 }) 213 214 /** 215 * [PresentPage] 216 * Select queue item 217 */ 218 it(BUNDLE + 'SelectQueueItem_001', 0, async (done: Function) => { 219 Log.info(BUNDLE + `SelectQueueItem_001 begin`); 220 try { 221 await driver.delayMs(1000); 222 let secondItem = await driver.findComponent(ON.id('ThirdMusicInQueue')); 223 await secondItem.click(); 224 await driver.assertComponentExist(ON.id('PlayOrPause:true')); 225 226 227 } catch (error) { 228 Log.info(`Failed to select queue item, error info: ${error}`); 229 expect().assertFail(); 230 } 231 Log.info(BUNDLE + `SelectQueueItem_001 end`); 232 done(); 233 }) 234 }) 235}