15
15
*
16
16
* SPDX-License-Identifier: Apache-2.0
17
17
***********************************************************************/
18
- import type { Page } from '@playwright/test' ;
19
- import { expect as playExpect , test } from '@playwright/test ' ;
20
- import { AuthenticationPage , ExtensionCardPage , NavigationBar , PodmanDesktopRunner , WelcomePage } from '@podman-desktop/tests-playwright' ;
18
+
19
+ import type { NavigationBar } from '@podman-desktop/tests-playwright ' ;
20
+ import { AuthenticationPage , expect as playExpect , ExtensionCardPage , RunnerOptions , test } from '@podman-desktop/tests-playwright' ;
21
21
22
22
import { SSOExtensionPage } from './model/pages/sso-extension-page' ;
23
23
24
- let pdRunner : PodmanDesktopRunner ;
25
- let page : Page ;
26
- let navBar : NavigationBar ;
27
24
let extensionInstalled = false ;
28
25
let extensionCard : ExtensionCardPage ;
29
26
const imageName = 'ghcr.io/redhat-developer/podman-desktop-redhat-account-ext:latest' ;
@@ -34,65 +31,63 @@ const activeExtensionStatus = 'ACTIVE';
34
31
const disabledExtensionStatus = 'DISABLED' ;
35
32
const skipInstallation = process . env . SKIP_INSTALLATION ? process . env . SKIP_INSTALLATION : false ;
36
33
37
- test . beforeAll ( async ( ) => {
38
- pdRunner = new PodmanDesktopRunner ( { customFolder : 'sso-tests-pd' , autoUpdate : false , autoCheckUpdate : false } ) ;
39
- page = await pdRunner . start ( ) ;
40
- pdRunner . setVideoAndTraceName ( 'sso-e2e' ) ;
41
-
42
- const welcomePage = new WelcomePage ( page ) ;
34
+ test . use ( {
35
+ runnerOptions : new RunnerOptions ( { customFolder : 'sso-tests-pd' , autoUpdate : false , autoCheckUpdates : false } ) ,
36
+ } ) ;
37
+ test . beforeAll ( async ( { runner, page, welcomePage } ) => {
38
+ runner . setVideoAndTraceName ( 'sso-e2e' ) ;
43
39
await welcomePage . handleWelcomePage ( true ) ;
44
- navBar = new NavigationBar ( page ) ;
45
40
extensionCard = new ExtensionCardPage ( page , extensionLabelName , extensionLabel ) ;
46
41
} ) ;
47
42
48
- test . afterAll ( async ( ) => {
49
- await pdRunner . close ( ) ;
43
+ test . afterAll ( async ( { runner } ) => {
44
+ await runner . close ( ) ;
50
45
} ) ;
51
46
52
- test . describe ( 'Red Hat Authentication extension verification' , ( ) => {
53
- test . describe ( 'Red Hat Authentication extension installation' , ( ) => {
54
- test ( 'Go to extensions and check if extension is already installed' , async ( ) => {
55
- const extensions = await navBar . openExtensions ( ) ;
47
+ test . describe . serial ( 'Red Hat Authentication extension verification' , ( ) => {
48
+ test . describe . serial ( 'Red Hat Authentication extension installation' , ( ) => {
49
+ test ( 'Go to extensions and check if extension is already installed' , async ( { navigationBar } ) => {
50
+ const extensions = await navigationBar . openExtensions ( ) ;
56
51
if ( await extensions . extensionIsInstalled ( extensionLabel ) ) {
57
52
extensionInstalled = true ;
58
53
}
59
54
} ) ;
60
55
61
56
// we want to skip removing of the extension when we are running tests from PR check
62
- test ( 'Uninstalle previous version of sso extension' , async ( ) => {
57
+ test ( 'Uninstalle previous version of sso extension' , async ( { navigationBar } ) => {
63
58
test . skip ( ! extensionInstalled || ! ! skipInstallation ) ;
64
59
test . setTimeout ( 60000 ) ;
65
- await removeExtension ( ) ;
60
+ await removeExtension ( navigationBar ) ;
66
61
} ) ;
67
62
68
- test ( 'Extension can be installed using OCI image' , async ( ) => {
63
+ test ( 'Extension can be installed using OCI image' , async ( { navigationBar } ) => {
69
64
test . skip ( extensionInstalled && ! skipInstallation ) ;
70
65
test . setTimeout ( 200000 ) ;
71
- const extensions = await navBar . openExtensions ( ) ;
66
+ const extensions = await navigationBar . openExtensions ( ) ;
72
67
await extensions . installExtensionFromOCIImage ( imageName ) ;
73
68
await playExpect ( extensionCard . card ) . toBeVisible ( ) ;
74
69
} ) ;
75
70
76
- test ( 'Extension card is present and active' , async ( ) => {
77
- const extensions = await navBar . openExtensions ( ) ;
71
+ test ( 'Extension card is present and active' , async ( { navigationBar } ) => {
72
+ const extensions = await navigationBar . openExtensions ( ) ;
78
73
await playExpect . poll ( async ( ) =>
79
74
await extensions . extensionIsInstalled ( extensionLabel ) , { timeout : 30000 } ,
80
75
) . toBeTruthy ( ) ;
81
76
const extensionCard = await extensions . getInstalledExtension ( extensionLabelName , extensionLabel ) ;
82
77
await playExpect ( extensionCard . status ) . toHaveText ( activeExtensionStatus ) ;
83
78
} ) ;
84
79
85
- test ( 'Extension Details show correct status' , async ( ) => {
86
- const extensions = await navBar . openExtensions ( ) ;
80
+ test ( 'Extension Details show correct status' , async ( { page , navigationBar } ) => {
81
+ const extensions = await navigationBar . openExtensions ( ) ;
87
82
const extensionCard = await extensions . getInstalledExtension ( extensionLabelName , extensionLabel ) ;
88
83
await extensionCard . openExtensionDetails ( 'Red Hat Authentication' ) ;
89
84
const details = new SSOExtensionPage ( page ) ;
90
85
await playExpect ( details . heading ) . toBeVisible ( ) ;
91
86
await playExpect ( details . status ) . toHaveText ( activeExtensionStatus ) ;
92
87
} ) ;
93
88
94
- test ( 'SSO provider is available in Authentication Page' , async ( ) => {
95
- const settingsBar = await navBar . openSettings ( ) ;
89
+ test ( 'SSO provider is available in Authentication Page' , async ( { navigationBar } ) => {
90
+ const settingsBar = await navigationBar . openSettings ( ) ;
96
91
const authPage = await settingsBar . openTabPage ( AuthenticationPage ) ;
97
92
await playExpect ( authPage . heading ) . toHaveText ( 'Authentication' ) ;
98
93
const provider = authPage . getProvider ( authProviderName ) ;
@@ -102,43 +97,43 @@ test.describe('Red Hat Authentication extension verification', () => {
102
97
} ) ;
103
98
} ) ;
104
99
105
- test . describe ( 'Red Hat Authentication extension handling' , ( ) => {
106
- test ( 'Extension can be disabled' , async ( ) => {
107
- const extensions = await navBar . openExtensions ( ) ;
100
+ test . describe . serial ( 'Red Hat Authentication extension handling' , ( ) => {
101
+ test ( 'Extension can be disabled' , async ( { navigationBar } ) => {
102
+ const extensions = await navigationBar . openExtensions ( ) ;
108
103
playExpect ( await extensions . extensionIsInstalled ( extensionLabel ) ) . toBeTruthy ( ) ;
109
104
const extensionCard = await extensions . getInstalledExtension ( extensionLabelName , extensionLabel ) ;
110
105
await playExpect ( extensionCard . status ) . toHaveText ( activeExtensionStatus ) ;
111
106
await extensionCard . disableExtension ( ) ;
112
107
await playExpect ( extensionCard . status ) . toHaveText ( disabledExtensionStatus ) ;
113
108
114
- const settingsBar = await navBar . openSettings ( ) ;
109
+ const settingsBar = await navigationBar . openSettings ( ) ;
115
110
const authPage = await settingsBar . openTabPage ( AuthenticationPage ) ;
116
111
await playExpect ( authPage . heading ) . toHaveText ( 'Authentication' ) ;
117
112
const provider = authPage . getProvider ( authProviderName ) ;
118
113
await playExpect ( provider ) . toHaveCount ( 0 ) ;
119
114
} ) ;
120
115
121
- test ( 'Extension can be re-enabled correctly' , async ( ) => {
122
- const extensions = await navBar . openExtensions ( ) ;
116
+ test ( 'Extension can be re-enabled correctly' , async ( { navigationBar } ) => {
117
+ const extensions = await navigationBar . openExtensions ( ) ;
123
118
playExpect ( await extensions . extensionIsInstalled ( extensionLabel ) ) . toBeTruthy ( ) ;
124
119
const extensionCard = await extensions . getInstalledExtension ( extensionLabelName , extensionLabel ) ;
125
120
await playExpect ( extensionCard . status ) . toHaveText ( disabledExtensionStatus ) ;
126
121
await extensionCard . enableExtension ( ) ;
127
122
await playExpect ( extensionCard . status ) . toHaveText ( activeExtensionStatus ) ;
128
123
129
- const settingsBar = await navBar . openSettings ( ) ;
124
+ const settingsBar = await navigationBar . openSettings ( ) ;
130
125
const authPage = await settingsBar . openTabPage ( AuthenticationPage ) ;
131
126
await playExpect ( authPage . heading ) . toHaveText ( 'Authentication' ) ;
132
127
await playExpect ( authPage . getProvider ( authProviderName ) ) . toHaveCount ( 1 ) ;
133
128
} ) ;
134
129
} ) ;
135
130
136
- test ( 'SSO extension can be removed' , async ( ) => {
137
- await removeExtension ( ) ;
131
+ test ( 'SSO extension can be removed' , async ( { navigationBar } ) => {
132
+ await removeExtension ( navigationBar ) ;
138
133
} ) ;
139
134
} ) ;
140
135
141
- async function removeExtension ( ) : Promise < void > {
136
+ async function removeExtension ( navBar : NavigationBar ) : Promise < void > {
142
137
const extensions = await navBar . openExtensions ( ) ;
143
138
const extensionCard = await extensions . getInstalledExtension ( extensionLabelName , extensionLabel ) ;
144
139
await extensionCard . disableExtension ( ) ;
0 commit comments