• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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}