Skip to content

Commit d26771a

Browse files
authored
Merge pull request #67 from rostalan/install-test
chore: added extension handling e2e tests
2 parents 5decf94 + 4eec8fb commit d26771a

File tree

2 files changed

+67
-3
lines changed

2 files changed

+67
-3
lines changed
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
/**********************************************************************
2+
* Copyright (C) 2025 Red Hat, Inc.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*
16+
* SPDX-License-Identifier: Apache-2.0
17+
***********************************************************************/
18+
19+
import { defineConfig, devices } from '@playwright/test';
20+
21+
export default defineConfig({
22+
outputDir: 'tests/output/',
23+
workers: 1,
24+
timeout: 60000,
25+
26+
reporter: [
27+
['list'],
28+
['junit', { outputFile: 'tests/output/junit-results.xml' }],
29+
['json', { outputFile: 'tests/output/json-results.json' }],
30+
['html', { open: 'never', outputFolder: 'tests/playwright/output/html-results' }],
31+
],
32+
33+
projects: [
34+
{
35+
name: 'chromium',
36+
use: {
37+
...devices['Desktop Chrome'],
38+
},
39+
},
40+
],
41+
});

podman-desktop-extension/tests/src/image-checker.spec.ts

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,30 @@ test.describe.serial('Red Hat Image Checker extension installation', () => {
9494
});
9595

9696
test('Image Checker tab is present in Image Details Page', async ({ navigationBar }) => {
97-
await imageCheckerTabPresent(navigationBar);
97+
const imageDetailsPage = await getImageDetailsPage(navigationBar);
98+
await playExpect(imageDetailsPage.imageCheckerTab).toBeVisible();
99+
});
100+
});
101+
102+
test.describe.serial('Red Hat Image Checker extension handling', () => {
103+
test('Extension can be disabled', async ({ navigationBar }) => {
104+
const extensions = await navigationBar.openExtensions();
105+
playExpect(extensions.extensionIsInstalled(extensionLabel)).toBeTruthy();
106+
const extensionCard = await extensions.getInstalledExtension(extensionLabelName, extensionLabel);
107+
await extensionCard.disableExtension();
108+
await playExpect(extensionCard.status).toHaveText(disabledExtensionStatus);
109+
const imageDetailsPage = await getImageDetailsPage(navigationBar);
110+
await playExpect(imageDetailsPage.imageCheckerTab).not.toBeDefined();
111+
});
112+
113+
test('Extension can be re-enabled', async ({ navigationBar }) => {
114+
const extensions = await navigationBar.openExtensions();
115+
playExpect(extensions.extensionIsInstalled(extensionLabel)).toBeTruthy();
116+
const extensionCard = await extensions.getInstalledExtension(extensionLabelName, extensionLabel);
117+
await extensionCard.enableExtension();
118+
await playExpect(extensionCard.status).toHaveText(activeExtensionStatus);
119+
const imageDetailsPage = await getImageDetailsPage(navigationBar);
120+
await playExpect(imageDetailsPage.imageCheckerTab).toBeVisible();
98121
});
99122

100123
test('Extension can be removed', async ({ navigationBar }) => {
@@ -112,7 +135,7 @@ async function removeExtension(navigationBar: NavigationBar): Promise<void> {
112135
.toBeFalsy();
113136
}
114137

115-
async function imageCheckerTabPresent(navigationBar: NavigationBar) {
138+
async function getImageDetailsPage(navigationBar: NavigationBar): Promise<ImageCheckerImageDetailsPage> {
116139
const imagesPage = await navigationBar.openImages();
117140
await playExpect(imagesPage.heading).toBeVisible();
118141

@@ -124,5 +147,5 @@ async function imageCheckerTabPresent(navigationBar: NavigationBar) {
124147

125148
const imageDetailPage = await imagesPage.openImageDetails(imageToCheck);
126149
const imageDetailsPage = new ImageCheckerImageDetailsPage(imageDetailPage.page, imageToCheck);
127-
await playExpect(imageDetailsPage.imageCheckerTab).toBeVisible();
150+
return imageDetailsPage;
128151
}

0 commit comments

Comments
 (0)