@@ -87,4 +87,4 @@ Error generating stack: `+l.message+`
|
||||
<div id='root'></div>
|
||||
</body>
|
||||
</html>
|
||||
<template id="playwrightReportBase64">data:application/zip;base64,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</template>
|
||||
<template id="playwrightReportBase64">data:application/zip;base64,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</template>
|
||||
@@ -6,23 +6,13 @@
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: homePage.test.ts >> startuje přímo ve světlém režimu
|
||||
- Location: tests/homePage.test.ts:137:5
|
||||
- Name: homePage.test.ts >> Theme >> Mock date light >> Light to Dark check
|
||||
- Location: tests/homePage.test.ts:175:9
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: expect(locator).toHaveAttribute(expected) failed
|
||||
|
||||
Locator: locator('data-theme')
|
||||
Expected: "light"
|
||||
Timeout: 5000ms
|
||||
Error: element(s) not found
|
||||
|
||||
Call log:
|
||||
- Expect "toHaveAttribute" with timeout 5000ms
|
||||
- waiting for locator('data-theme')
|
||||
|
||||
ReferenceError: homePage is not defined
|
||||
```
|
||||
|
||||
# Page snapshot
|
||||
@@ -61,7 +51,7 @@ Call log:
|
||||
- generic [ref=e25]:
|
||||
- text: Sdílet
|
||||
- button "Přepnout téma" [ref=e26] [cursor=pointer]:
|
||||
- generic [ref=e27]:
|
||||
- generic [ref=e27]:
|
||||
- main [ref=e28]:
|
||||
- generic [ref=e29]:
|
||||
- heading "🇨🇿 Vítám Tě na webu České komunity EndeavourOS! 🇨🇿" [level=1] [ref=e30]
|
||||
@@ -125,107 +115,109 @@ Call log:
|
||||
# Test source
|
||||
|
||||
```ts
|
||||
48 | test('navigation to EndeavourOS', async ({ page }) => {
|
||||
49 | await homePage.clickMenuItem('EndeavourOS');
|
||||
50 | await expect(page).toHaveURL(new RegExp(`.*${homePage.url}/endeavouros`));
|
||||
51 | });
|
||||
52 |
|
||||
53 | test('navigation to Články', async ({ page }) => {
|
||||
54 | await homePage.clickMenuItem('Články');
|
||||
55 | await expect(page).toHaveURL(new RegExp(`.*${homePage.url}/rozcestnik`));
|
||||
56 | });
|
||||
57 |
|
||||
58 | test('navigation to Krátké návody', async ({ page }) => {
|
||||
59 | await homePage.clickMenuItem('Krátké návody');
|
||||
60 | await expect(page).toHaveURL(new RegExp(`.*${homePage.url}/cheatsheet`));
|
||||
61 | });
|
||||
62 |
|
||||
63 | // Seznam externích odkazů, které chceme prověřit
|
||||
64 | // Nyní nejde nutno doopravit
|
||||
65 | // test('externí odkazy v menu jsou platné', async ({ page, request }) => {
|
||||
66 | // const homePage = new HomePage(page);
|
||||
67 | // await homePage.navigate();
|
||||
68 |
|
||||
69 | // Seznam externích odkazů, které chceme prověřit
|
||||
70 | // test('kontrola externích odkazů na zdraví (status 200)', async ({ page, request }) => {
|
||||
71 | // const homePage = new HomePage(page);
|
||||
72 | // await homePage.navigate();
|
||||
73 |
|
||||
74 | // for (const link of externalLinks) {
|
||||
75 | // // Ověříme, že text tlačítka je na stránce vidět
|
||||
76 | // const href = await homePage.getMenuItemHref(link.name);
|
||||
77 |
|
||||
78 | // // Ověříme, že href v HTML odpovídá tomu, co máme v datech
|
||||
79 | // expect(href).toBe(link.url);
|
||||
80 |
|
||||
81 | // // Provedeme rychlou kontrolu, zda link není "mrtvý"
|
||||
82 | // const response = await request.get(link.url);
|
||||
83 | // expect(response.ok(), `Odkaz ${link.name} na adrese ${link.url} vrací chybu!`).toBeTruthy();
|
||||
84 |
|
||||
85 | // console.log(`Log: Odkaz "${link.name}" je v pořádku.`);
|
||||
86 | // }
|
||||
87 | // });
|
||||
88 |
|
||||
89 | //funkční řešení - otevře web
|
||||
90 | test('externí Fórum -> odkaz má správnou adresu', async () => {
|
||||
91 | const href = await homePage.getMenuItemLinkHref('Fórum'); // Příklad
|
||||
92 | expect(href).toBe('https://forum.arch-linux.cz/');
|
||||
93 | });
|
||||
94 |
|
||||
95 | test('navigation to O nás', async ({ page }) => {
|
||||
96 | await homePage.clickMenuItem('O nás');
|
||||
97 | await expect(page).toHaveURL(new RegExp(`.*${homePage.url}/o-nas`));
|
||||
98 | });
|
||||
99 | });
|
||||
100 |
|
||||
101 | test.describe('Theme', () => {
|
||||
102 | let homePage: HomePage;
|
||||
103 |
|
||||
104 | test.beforeEach(async ({ page }) => {
|
||||
105 | homePage = new HomePage(page);
|
||||
106 | await homePage.navigate();
|
||||
107 | });
|
||||
108 | test('switch theme sun', async ({ page }) => {
|
||||
109 | await homePage.switchThemeFunction()
|
||||
110 | })
|
||||
111 |
|
||||
112 | })
|
||||
113 |
|
||||
114 | test.describe('Carts (Karty) na HomePage', () => {
|
||||
115 | let homePage: HomePage;
|
||||
116 |
|
||||
117 | test.beforeEach(async ({ page }) => {
|
||||
118 | homePage = new HomePage(page);
|
||||
119 | await homePage.navigate();
|
||||
120 | });
|
||||
121 |
|
||||
122 | // Otestuje textace na kartách
|
||||
123 | test('should display all cards correctly', async () => {
|
||||
124 | for (const card of homePageCards) {
|
||||
125 | // Používáme naši POM metodu pro každou kartu
|
||||
126 | await homePage.verifyCardContent(card.title, card.description);
|
||||
127 | }
|
||||
128 | });
|
||||
129 |
|
||||
130 | // test('should navigate after clicking on a specific card', async ({ page }) => {
|
||||
131 | // // Příklad pro jednu konkrétní kartu
|
||||
132 | // await homePage.clickCardButton('Lehkost a rychlost');
|
||||
133 | // // Zde by následoval expect na novou URL
|
||||
134 | // });
|
||||
135 | });
|
||||
136 | });
|
||||
137 | test('startuje přímo ve světlém režimu', async ({ page }) => {
|
||||
138 | // Tento skript se spustí dříve, než se načte CSS a JS tvého webu
|
||||
139 | await page.addInitScript(() => {
|
||||
140 | document.documentElement.setAttribute('data-theme', 'light');
|
||||
141 | // Pokud ukládáš nastavení do localStorage, můžeš ho "přednastavit" i tam
|
||||
142 | window.localStorage.setItem('data-theme', 'light');
|
||||
143 | });
|
||||
144 |
|
||||
145 | await page.goto('https://endeavouros.cz');
|
||||
146 |
|
||||
147 | // Nyní už rovnou ověřuješ, že je vše světlé
|
||||
> 148 | await expect(page.locator('data-theme')).toHaveAttribute('data-theme', 'light');
|
||||
| ^ Error: expect(locator).toHaveAttribute(expected) failed
|
||||
149 | });
|
||||
101 |
|
||||
102 |
|
||||
103 | test.describe('Carts (Karty) na HomePage', () => {
|
||||
104 | let homePage: HomePage;
|
||||
105 |
|
||||
106 | test.beforeEach(async ({ page }) => {
|
||||
107 | homePage = new HomePage(page);
|
||||
108 | await homePage.navigate();
|
||||
109 | });
|
||||
110 |
|
||||
111 | // Otestuje textace na kartách
|
||||
112 | test('should display all cards correctly', async () => {
|
||||
113 | for (const card of homePageCards) {
|
||||
114 | // Používáme naši POM metodu pro každou kartu
|
||||
115 | await homePage.verifyCardContent(card.title, card.description);
|
||||
116 | }
|
||||
117 | });
|
||||
118 |
|
||||
119 | // test('should navigate after clicking on a specific card', async ({ page }) => {
|
||||
120 | // // Příklad pro jednu konkrétní kartu
|
||||
121 | // await homePage.clickCardButton('Lehkost a rychlost');
|
||||
122 | // // Zde by následoval expect na novou URL
|
||||
123 | // });
|
||||
124 | });
|
||||
125 | });
|
||||
126 |
|
||||
127 |
|
||||
128 |
|
||||
129 | test.describe('Theme', () => {
|
||||
130 | test.describe('Theme -- dark default to light', () => {
|
||||
131 | let homePage: HomePage;
|
||||
132 |
|
||||
133 | test.beforeEach(async ({ page }) => {
|
||||
134 | homePage = new HomePage(page);
|
||||
135 | await homePage.navigate();
|
||||
136 | });
|
||||
137 | test('switch theme sun', async ({ page }) => {
|
||||
138 | await homePage.switchThemeFunctionLight()
|
||||
139 | });
|
||||
140 |
|
||||
141 | });
|
||||
142 | test.describe('Mock date light', () => {
|
||||
143 | test('vynucený start ve světlém režimu + kontrola režimu', async ({ page }) => {
|
||||
144 | // 1. Nastavíme emulaci systému na light (to je základ)
|
||||
145 | await page.emulateMedia({ colorScheme: 'light' });
|
||||
146 |
|
||||
147 | // 2. Mockujeme stav paměti a DOMu
|
||||
148 | await page.addInitScript(() => {
|
||||
149 | // Vnutíme informaci, že chceme light do paměti
|
||||
150 | window.localStorage.setItem('theme', 'light');
|
||||
151 | window.localStorage.setItem('color-theme', 'light'); // Pro jistotu oba běžné názvy
|
||||
152 |
|
||||
153 | // Tady je ten trik: Sledujeme, kdyby se web snažil přidat 'dark' a hned to smažeme
|
||||
154 | const observer = new MutationObserver(() => {
|
||||
155 | if (document.documentElement.classList.contains('dark')) {
|
||||
156 | document.documentElement.classList.remove('dark');
|
||||
157 | }
|
||||
158 | });
|
||||
159 | observer.observe(document.documentElement, { attributes: true, attributeFilter: ['class'] });
|
||||
160 | });
|
||||
161 |
|
||||
162 | // 3. Jdeme na web
|
||||
163 | await page.goto('https://endeavouros.cz');
|
||||
164 |
|
||||
165 | // 4. OVĚŘENÍ: Teď už musí být světlý
|
||||
166 | const html = page.locator('html');
|
||||
167 | await expect(html).not.toHaveClass(/dark/);
|
||||
168 |
|
||||
169 | // Vizuální kontrola - barva pozadí by teď měla být bílá/světlá (rgb 255, 255, 255)
|
||||
170 | // Poznámka: Pokud má web i ve světlém režimu jinou barvu, uprav si rgb hodnotu
|
||||
171 | await expect(page.locator('body')).toHaveCSS('background-color', 'rgb(248, 249, 250)');
|
||||
172 | await expect(page.locator('html')).toHaveAttribute('data-theme', 'light');
|
||||
173 |
|
||||
174 | });
|
||||
175 | test('Light to Dark check', async ({ page }) => {
|
||||
176 | // 1. Nastavíme emulaci systému na light (to je základ)
|
||||
177 | await page.emulateMedia({ colorScheme: 'light' });
|
||||
178 |
|
||||
179 | // 2. Mockujeme stav paměti a DOMu
|
||||
180 | await page.addInitScript(() => {
|
||||
181 | // Vnutíme informaci, že chceme light do paměti
|
||||
182 | window.localStorage.setItem('theme', 'light');
|
||||
183 | window.localStorage.setItem('color-theme', 'light'); // Pro jistotu oba běžné názvy
|
||||
184 |
|
||||
185 | // Tady je ten trik: Sledujeme, kdyby se web snažil přidat 'dark' a hned to smažeme
|
||||
186 | const observer = new MutationObserver(() => {
|
||||
187 | if (document.documentElement.classList.contains('dark')) {
|
||||
188 | document.documentElement.classList.remove('dark');
|
||||
189 | }
|
||||
190 | });
|
||||
191 | observer.observe(document.documentElement, { attributes: true, attributeFilter: ['class'] });
|
||||
192 | });
|
||||
193 |
|
||||
194 | // 3. Jdeme na web
|
||||
195 | await page.goto('https://endeavouros.cz');
|
||||
196 |
|
||||
197 | // 4. OVĚŘENÍ: Teď už musí být světlý
|
||||
198 | const html = page.locator('html');
|
||||
199 | await expect(html).not.toHaveClass(/dark/);
|
||||
> 200 | await homePage.switchThemeFunctionDark()
|
||||
| ^ ReferenceError: homePage is not defined
|
||||
201 | });
|
||||
202 | });
|
||||
203 | });
|
||||
```
|
||||
|
After Width: | Height: | Size: 89 KiB |
@@ -6,25 +6,13 @@
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: homePage.test.ts >> EndeavourOS HomePage - POM >> Theme >> startuje přímo ve světlém režimu
|
||||
- Location: tests/homePage.test.ts:111:9
|
||||
- Name: homePage.test.ts >> Theme >> Theme -- dark default to light >> switch theme sun
|
||||
- Location: tests/homePage.test.ts:137:9
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: expect(locator).toHaveAttribute(expected) failed
|
||||
|
||||
Locator: locator('html')
|
||||
Expected: "light"
|
||||
Received: "dark"
|
||||
Timeout: 5000ms
|
||||
|
||||
Call log:
|
||||
- Expect "toHaveAttribute" with timeout 5000ms
|
||||
- waiting for locator('html')
|
||||
9 × locator resolved to <html lang="cs" data-theme="dark">…</html>
|
||||
- unexpected value "dark"
|
||||
|
||||
TypeError: homePage.switchThemeFunctionLight is not a function
|
||||
```
|
||||
|
||||
# Page snapshot
|
||||
@@ -127,22 +115,6 @@ Call log:
|
||||
# Test source
|
||||
|
||||
```ts
|
||||
22 | });
|
||||
23 |
|
||||
24 | test('check all hello text visibility', async ({ page }) => {
|
||||
25 | await homePage.checkHalloText(expectedHalloText);
|
||||
26 | const locator = page.locator('.hero');
|
||||
27 |
|
||||
28 | await expect(locator).toHaveText(expectedHeroToHaveText);
|
||||
29 | await expect(homePage.halloDescription2).toHaveText(expectedHalloToHaveText2);
|
||||
30 |
|
||||
31 |
|
||||
32 | });
|
||||
33 | });
|
||||
34 |
|
||||
35 | test.describe('navigate', () => {
|
||||
36 |
|
||||
37 | test('search for a term', async ({page}) => {
|
||||
38 | await homePage.searchInput.fill('EndeavourOS');
|
||||
39 | // nejdříve je nutno opravit vyhledávaní na webu
|
||||
40 | // await page.getByText('Linux pacman příkazy').click();
|
||||
@@ -206,56 +178,108 @@ Call log:
|
||||
98 | });
|
||||
99 | });
|
||||
100 |
|
||||
101 | test.describe('Theme', () => {
|
||||
102 | let homePage: HomePage;
|
||||
103 |
|
||||
104 | test.beforeEach(async ({ page }) => {
|
||||
105 | homePage = new HomePage(page);
|
||||
106 | await homePage.navigate();
|
||||
107 | });
|
||||
108 | test('switch theme sun', async ({ page }) => {
|
||||
109 | await homePage.switchThemeFunction()
|
||||
110 | })
|
||||
111 | test('startuje přímo ve světlém režimu', async ({ page }) => {
|
||||
112 | // Tento skript se spustí dříve, než se načte CSS a JS tvého webu
|
||||
113 | await page.addInitScript(() => {
|
||||
114 | document.documentElement.setAttribute('data-theme', 'light');
|
||||
115 | // Pokud ukládáš nastavení do localStorage, můžeš ho "přednastavit" i tam
|
||||
116 | window.localStorage.setItem('theme', 'light');
|
||||
117 | });
|
||||
118 |
|
||||
119 | await page.goto('https://endeavouros.cz');
|
||||
120 |
|
||||
121 | // Nyní už rovnou ověřuješ, že je vše světlé
|
||||
> 122 | await expect(page.locator('html')).toHaveAttribute('data-theme', 'light');
|
||||
| ^ Error: expect(locator).toHaveAttribute(expected) failed
|
||||
123 | const themeButton = page.locator('#data-theme');
|
||||
124 | await themeButton.click();
|
||||
125 | await expect(page.locator('html')).toHaveAttribute('data-theme', 'dark');
|
||||
126 | });
|
||||
127 | })
|
||||
101 |
|
||||
102 |
|
||||
103 | test.describe('Carts (Karty) na HomePage', () => {
|
||||
104 | let homePage: HomePage;
|
||||
105 |
|
||||
106 | test.beforeEach(async ({ page }) => {
|
||||
107 | homePage = new HomePage(page);
|
||||
108 | await homePage.navigate();
|
||||
109 | });
|
||||
110 |
|
||||
111 | // Otestuje textace na kartách
|
||||
112 | test('should display all cards correctly', async () => {
|
||||
113 | for (const card of homePageCards) {
|
||||
114 | // Používáme naši POM metodu pro každou kartu
|
||||
115 | await homePage.verifyCardContent(card.title, card.description);
|
||||
116 | }
|
||||
117 | });
|
||||
118 |
|
||||
119 | // test('should navigate after clicking on a specific card', async ({ page }) => {
|
||||
120 | // // Příklad pro jednu konkrétní kartu
|
||||
121 | // await homePage.clickCardButton('Lehkost a rychlost');
|
||||
122 | // // Zde by následoval expect na novou URL
|
||||
123 | // });
|
||||
124 | });
|
||||
125 | });
|
||||
126 |
|
||||
127 |
|
||||
128 |
|
||||
129 | test.describe('Carts (Karty) na HomePage', () => {
|
||||
130 | let homePage: HomePage;
|
||||
131 |
|
||||
132 | test.beforeEach(async ({ page }) => {
|
||||
133 | homePage = new HomePage(page);
|
||||
134 | await homePage.navigate();
|
||||
135 | });
|
||||
136 |
|
||||
137 | // Otestuje textace na kartách
|
||||
138 | test('should display all cards correctly', async () => {
|
||||
139 | for (const card of homePageCards) {
|
||||
140 | // Používáme naši POM metodu pro každou kartu
|
||||
141 | await homePage.verifyCardContent(card.title, card.description);
|
||||
142 | }
|
||||
143 | });
|
||||
144 |
|
||||
145 | // test('should navigate after clicking on a specific card', async ({ page }) => {
|
||||
146 | // // Příklad pro jednu konkrétní kartu
|
||||
147 | // await homePage.clickCardButton('Lehkost a rychlost');
|
||||
148 | // // Zde by následoval expect na novou URL
|
||||
149 | // });
|
||||
150 | });
|
||||
151 | });
|
||||
129 | test.describe('Theme', () => {
|
||||
130 | test.describe('Theme -- dark default to light', () => {
|
||||
131 | let homePage: HomePage;
|
||||
132 |
|
||||
133 | test.beforeEach(async ({ page }) => {
|
||||
134 | homePage = new HomePage(page);
|
||||
135 | await homePage.navigate();
|
||||
136 | });
|
||||
137 | test('switch theme sun', async ({ page }) => {
|
||||
> 138 | await homePage.switchThemeFunctionLight()
|
||||
| ^ TypeError: homePage.switchThemeFunctionLight is not a function
|
||||
139 | });
|
||||
140 |
|
||||
141 | });
|
||||
142 | test.describe('Mock date light', () => {
|
||||
143 | test('vynucený start ve světlém režimu + kontrola režimu', async ({ page }) => {
|
||||
144 | // 1. Nastavíme emulaci systému na light (to je základ)
|
||||
145 | await page.emulateMedia({ colorScheme: 'light' });
|
||||
146 |
|
||||
147 | // 2. Mockujeme stav paměti a DOMu
|
||||
148 | await page.addInitScript(() => {
|
||||
149 | // Vnutíme informaci, že chceme light do paměti
|
||||
150 | window.localStorage.setItem('theme', 'light');
|
||||
151 | window.localStorage.setItem('color-theme', 'light'); // Pro jistotu oba běžné názvy
|
||||
152 |
|
||||
153 | // Tady je ten trik: Sledujeme, kdyby se web snažil přidat 'dark' a hned to smažeme
|
||||
154 | const observer = new MutationObserver(() => {
|
||||
155 | if (document.documentElement.classList.contains('dark')) {
|
||||
156 | document.documentElement.classList.remove('dark');
|
||||
157 | }
|
||||
158 | });
|
||||
159 | observer.observe(document.documentElement, { attributes: true, attributeFilter: ['class'] });
|
||||
160 | });
|
||||
161 |
|
||||
162 | // 3. Jdeme na web
|
||||
163 | await page.goto('https://endeavouros.cz');
|
||||
164 |
|
||||
165 | // 4. OVĚŘENÍ: Teď už musí být světlý
|
||||
166 | const html = page.locator('html');
|
||||
167 | await expect(html).not.toHaveClass(/dark/);
|
||||
168 |
|
||||
169 | // Vizuální kontrola - barva pozadí by teď měla být bílá/světlá (rgb 255, 255, 255)
|
||||
170 | // Poznámka: Pokud má web i ve světlém režimu jinou barvu, uprav si rgb hodnotu
|
||||
171 | await expect(page.locator('body')).toHaveCSS('background-color', 'rgb(248, 249, 250)');
|
||||
172 | await expect(page.locator('html')).toHaveAttribute('data-theme', 'light');
|
||||
173 |
|
||||
174 | });
|
||||
175 | test('Light to Dark check', async ({ page }) => {
|
||||
176 | // 1. Nastavíme emulaci systému na light (to je základ)
|
||||
177 | await page.emulateMedia({ colorScheme: 'light' });
|
||||
178 |
|
||||
179 | // 2. Mockujeme stav paměti a DOMu
|
||||
180 | await page.addInitScript(() => {
|
||||
181 | // Vnutíme informaci, že chceme light do paměti
|
||||
182 | window.localStorage.setItem('theme', 'light');
|
||||
183 | window.localStorage.setItem('color-theme', 'light'); // Pro jistotu oba běžné názvy
|
||||
184 |
|
||||
185 | // Tady je ten trik: Sledujeme, kdyby se web snažil přidat 'dark' a hned to smažeme
|
||||
186 | const observer = new MutationObserver(() => {
|
||||
187 | if (document.documentElement.classList.contains('dark')) {
|
||||
188 | document.documentElement.classList.remove('dark');
|
||||
189 | }
|
||||
190 | });
|
||||
191 | observer.observe(document.documentElement, { attributes: true, attributeFilter: ['class'] });
|
||||
192 | });
|
||||
193 |
|
||||
194 | // 3. Jdeme na web
|
||||
195 | await page.goto('https://endeavouros.cz');
|
||||
196 |
|
||||
197 | // 4. OVĚŘENÍ: Teď už musí být světlý
|
||||
198 | const html = page.locator('html');
|
||||
199 | await expect(html).not.toHaveClass(/dark/);
|
||||
200 | await homePage.switchThemeFunctionDark()
|
||||
201 | });
|
||||
202 | });
|
||||
203 | });
|
||||
```
|
||||
|
Before Width: | Height: | Size: 83 KiB After Width: | Height: | Size: 83 KiB |
@@ -1,138 +0,0 @@
|
||||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: homePage.test.ts >> dark >> přepnutí z light do dark
|
||||
- Location: tests/homePage.test.ts:165:7
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Test timeout of 30000ms exceeded.
|
||||
```
|
||||
|
||||
```
|
||||
Error: locator.click: Test timeout of 30000ms exceeded.
|
||||
Call log:
|
||||
- waiting for locator('.data-theme')
|
||||
|
||||
```
|
||||
|
||||
# Test source
|
||||
|
||||
```ts
|
||||
73 |
|
||||
74 | // for (const link of externalLinks) {
|
||||
75 | // // Ověříme, že text tlačítka je na stránce vidět
|
||||
76 | // const href = await homePage.getMenuItemHref(link.name);
|
||||
77 |
|
||||
78 | // // Ověříme, že href v HTML odpovídá tomu, co máme v datech
|
||||
79 | // expect(href).toBe(link.url);
|
||||
80 |
|
||||
81 | // // Provedeme rychlou kontrolu, zda link není "mrtvý"
|
||||
82 | // const response = await request.get(link.url);
|
||||
83 | // expect(response.ok(), `Odkaz ${link.name} na adrese ${link.url} vrací chybu!`).toBeTruthy();
|
||||
84 |
|
||||
85 | // console.log(`Log: Odkaz "${link.name}" je v pořádku.`);
|
||||
86 | // }
|
||||
87 | // });
|
||||
88 |
|
||||
89 | //funkční řešení - otevře web
|
||||
90 | test('externí Fórum -> odkaz má správnou adresu', async () => {
|
||||
91 | const href = await homePage.getMenuItemLinkHref('Fórum'); // Příklad
|
||||
92 | expect(href).toBe('https://forum.arch-linux.cz/');
|
||||
93 | });
|
||||
94 |
|
||||
95 | test('navigation to O nás', async ({ page }) => {
|
||||
96 | await homePage.clickMenuItem('O nás');
|
||||
97 | await expect(page).toHaveURL(new RegExp(`.*${homePage.url}/o-nas`));
|
||||
98 | });
|
||||
99 | });
|
||||
100 |
|
||||
101 | test.describe('Theme', () => {
|
||||
102 | let homePage: HomePage;
|
||||
103 |
|
||||
104 | test.beforeEach(async ({ page }) => {
|
||||
105 | homePage = new HomePage(page);
|
||||
106 | await homePage.navigate();
|
||||
107 | });
|
||||
108 | test('switch theme sun', async ({ page }) => {
|
||||
109 | await homePage.switchThemeFunction()
|
||||
110 | })
|
||||
111 |
|
||||
112 | })
|
||||
113 |
|
||||
114 | test.describe('Carts (Karty) na HomePage', () => {
|
||||
115 | let homePage: HomePage;
|
||||
116 |
|
||||
117 | test.beforeEach(async ({ page }) => {
|
||||
118 | homePage = new HomePage(page);
|
||||
119 | await homePage.navigate();
|
||||
120 | });
|
||||
121 |
|
||||
122 | // Otestuje textace na kartách
|
||||
123 | test('should display all cards correctly', async () => {
|
||||
124 | for (const card of homePageCards) {
|
||||
125 | // Používáme naši POM metodu pro každou kartu
|
||||
126 | await homePage.verifyCardContent(card.title, card.description);
|
||||
127 | }
|
||||
128 | });
|
||||
129 |
|
||||
130 | // test('should navigate after clicking on a specific card', async ({ page }) => {
|
||||
131 | // // Příklad pro jednu konkrétní kartu
|
||||
132 | // await homePage.clickCardButton('Lehkost a rychlost');
|
||||
133 | // // Zde by následoval expect na novou URL
|
||||
134 | // });
|
||||
135 | });
|
||||
136 | });
|
||||
137 | test.describe('dark', () => {
|
||||
138 | test('přepnutí ze světlého startu do tmavého režimu', async ({ page }) => {
|
||||
139 | // 1. FÁZE: Vynucení světlého režimu před startem
|
||||
140 | // EndeavourOS.cz je defaultně tmavý, takže mu musíme zakázat třídu 'dark'
|
||||
141 | await page.addInitScript(() => {
|
||||
142 | document.documentElement.classList.remove('dark');
|
||||
143 | window.localStorage.setItem('theme', 'light');
|
||||
144 | });
|
||||
145 |
|
||||
146 | // 2. FÁZE: Načtení stránky
|
||||
147 | await page.goto('https://endeavouros.cz');
|
||||
148 |
|
||||
149 | // Kontrola, že jsme skutečně začali ve světlém (třída 'dark' chybí)
|
||||
150 | await expect(page.locator('html')).not.toHaveClass(/dark/);
|
||||
151 |
|
||||
152 | // 3. FÁZE: Akce - kliknutí na přepínač
|
||||
153 | // Na webu EndeavourOS.cz je to obvykle tlačítko v menu nebo záhlaví
|
||||
154 | // Tip: Použijeme ARIA label nebo ikonu, pokud známe selektor
|
||||
155 | const themeSwitcher = page.locator('button.theme-switcher, .mode-switcher');
|
||||
156 | await themeSwitcher.click();
|
||||
157 |
|
||||
158 | // 4. FÁZE: Ověření výsledku
|
||||
159 | // Nyní by se měla třída 'dark' vrátit na své místo
|
||||
160 | await expect(page.locator('html')).toHaveClass(/dark/);
|
||||
161 |
|
||||
162 | // A můžeme ověřit, že se změnila barva pozadí na tmavou
|
||||
163 | await expect(page.locator('body')).toHaveCSS('background-color', 'rgb(25, 20, 36)');
|
||||
164 | });
|
||||
165 | test('přepnutí z light do dark', async ({ page }) => {
|
||||
166 | // Počkáme, až se web načte a ujistíme se, že je fakt světlý
|
||||
167 | const html = page.locator('html');
|
||||
168 | await html.evaluate(el => el.classList.remove('dark'));
|
||||
169 |
|
||||
170 | await expect(html).not.toHaveClass(/dark/);
|
||||
171 |
|
||||
172 | // Teď klikni na přepínač
|
||||
> 173 | await page.locator('.data-theme').click(); // Zde doplň svůj reálný selektor
|
||||
| ^ Error: locator.click: Test timeout of 30000ms exceeded.
|
||||
174 |
|
||||
175 | // A teď už musí být dark
|
||||
176 | await expect(html).toHaveClass(/dark/);
|
||||
177 | });
|
||||
178 | });
|
||||
179 |
|
||||
180 |
|
||||
181 |
|
||||
```
|
||||
|
Before Width: | Height: | Size: 4.2 KiB |
@@ -1,252 +0,0 @@
|
||||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: homePage.test.ts >> dark >> přepnutí ze světlého startu do tmavého režimu
|
||||
- Location: tests/homePage.test.ts:138:7
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Test timeout of 30000ms exceeded.
|
||||
```
|
||||
|
||||
```
|
||||
Error: locator.click: Test timeout of 30000ms exceeded.
|
||||
Call log:
|
||||
- waiting for locator('button.theme-switcher, .mode-switcher')
|
||||
|
||||
```
|
||||
|
||||
# Page snapshot
|
||||
|
||||
```yaml
|
||||
- generic [active] [ref=e1]:
|
||||
- banner [ref=e2]:
|
||||
- generic [ref=e3]:
|
||||
- link "EndeavourOS Logo CZ" [ref=e4] [cursor=pointer]:
|
||||
- /url: /index.php
|
||||
- img "EndeavourOS Logo" [ref=e5]
|
||||
- generic [ref=e6]: CZ
|
||||
- navigation [ref=e7]:
|
||||
- list [ref=e8]:
|
||||
- listitem [ref=e9]:
|
||||
- link "Domů" [ref=e10] [cursor=pointer]:
|
||||
- /url: /index.php
|
||||
- listitem [ref=e11]:
|
||||
- link "EndeavourOS" [ref=e12] [cursor=pointer]:
|
||||
- /url: /endeavouros.php
|
||||
- listitem [ref=e13]:
|
||||
- link "Články" [ref=e14] [cursor=pointer]:
|
||||
- /url: /rozcestnik.php
|
||||
- listitem [ref=e15]:
|
||||
- link "Krátké návody" [ref=e16] [cursor=pointer]:
|
||||
- /url: /cheatsheet.php
|
||||
- listitem [ref=e17]:
|
||||
- link "Fórum" [ref=e18] [cursor=pointer]:
|
||||
- /url: https://forum.arch-linux.cz/
|
||||
- listitem [ref=e19]:
|
||||
- link "O nás" [ref=e20] [cursor=pointer]:
|
||||
- /url: /o-nas.php
|
||||
- generic [ref=e21]:
|
||||
- textbox "Hledat v článcích..." [ref=e23]
|
||||
- button "Sdílet stránku" [ref=e24] [cursor=pointer]:
|
||||
- generic [ref=e25]:
|
||||
- text: Sdílet
|
||||
- button "Přepnout téma" [ref=e26] [cursor=pointer]:
|
||||
- generic [ref=e27]:
|
||||
- main [ref=e28]:
|
||||
- generic [ref=e29]:
|
||||
- heading "🇨🇿 Vítám Tě na webu České komunity EndeavourOS! 🇨🇿" [level=1] [ref=e30]
|
||||
- paragraph [ref=e31]: Lehká, rychlá a moderní distribuce založená na Arch Linuxu.
|
||||
- heading "Je navržena tak, aby poskytovala uživatelům přístup k nejnovějším technologiím a softwaru, přičemž zachovává jednoduchost a stabilitu. Distribuce nabízí několik předinstalovaných prostředí." [level=4] [ref=e32]
|
||||
- heading "👇 Začínáme 👇" [level=2] [ref=e33]
|
||||
- generic [ref=e34]:
|
||||
- 'link "🚀 Přecházíme na Linux: Kompletní průvodce světem EndeavourOS a GNOME Máte pocit, že váš počítač s Windows je čím dál pomalejší? Štve vás, že si systém dělá, co chce, a vy nad ním nemáte kon... 2026-04-28" [ref=e35] [cursor=pointer]':
|
||||
- /url: "/article.php?slug=🚀 Přecházíme na Linux: Kompletní průvodce světem EndeavourOS a GNOME"
|
||||
- 'heading "🚀 Přecházíme na Linux: Kompletní průvodce světem EndeavourOS a GNOME" [level=3] [ref=e36]'
|
||||
- paragraph [ref=e37]: Máte pocit, že váš počítač s Windows je čím dál pomalejší? Štve vás, že si systém dělá, co chce, a vy nad ním nemáte kon...
|
||||
- generic [ref=e38]: 2026-04-28
|
||||
- link "⛵ Co je to ten Linux, EndeavourOS a GNOME? Malý slovníček pro úplné začátečníky Rozhodli jste se zkusit Linux, ale točí se vám hlava z názvů jako distribuce, prostředí, balíčky nebo AUR? Nebojte se. Ve světě Windows... 2026-04-28" [ref=e39] [cursor=pointer]:
|
||||
- /url: /article.php?slug=⛵ Co je to ten Linux, EndeavourOS a GNOME? Malý slovníček pro úplné začátečníky
|
||||
- heading "⛵ Co je to ten Linux, EndeavourOS a GNOME? Malý slovníček pro úplné začátečníky" [level=3] [ref=e40]
|
||||
- paragraph [ref=e41]: Rozhodli jste se zkusit Linux, ale točí se vám hlava z názvů jako distribuce, prostředí, balíčky nebo AUR? Nebojte se. Ve světě Windows...
|
||||
- generic [ref=e42]: 2026-04-28
|
||||
- 'link "🚀 Jak oživit počítač moderním systémem: Instalujeme EndeavourOS s GNOME Láká vás svět Linuxu, konkrétně pověstná rychlost a aktuálnost Arch Linuxu, ale odrazuje vás složitá instalace přes č... 2026-04-28" [ref=e43] [cursor=pointer]':
|
||||
- /url: "/article.php?slug=🚀 Jak oživit počítač moderním systémem: Instalujeme EndeavourOS s GNOME"
|
||||
- 'heading "🚀 Jak oživit počítač moderním systémem: Instalujeme EndeavourOS s GNOME" [level=3] [ref=e44]'
|
||||
- paragraph [ref=e45]: Láká vás svět Linuxu, konkrétně pověstná rychlost a aktuálnost Arch Linuxu, ale odrazuje vás složitá instalace přes č...
|
||||
- generic [ref=e46]: 2026-04-28
|
||||
- 'link "🔥 Záchranná brzda pro váš systém: Co je to LTS jádro a proč ho mít nainstalované Užíváte si rychlost EndeavourOS? Skvělé. Ale co když jednoho dne po aktualizaci zapnete počítač a nenaběhne grafika, nebo přesta... 2026-04-28" [ref=e47] [cursor=pointer]':
|
||||
- /url: "/article.php?slug=🔥 Záchranná brzda pro váš systém: Co je to LTS jádro a proč ho mít nainstalované"
|
||||
- 'heading "🔥 Záchranná brzda pro váš systém: Co je to LTS jádro a proč ho mít nainstalované" [level=3] [ref=e48]'
|
||||
- paragraph [ref=e49]: Užíváte si rychlost EndeavourOS? Skvělé. Ale co když jednoho dne po aktualizaci zapnete počítač a nenaběhne grafika, nebo přesta...
|
||||
- generic [ref=e50]: 2026-04-28
|
||||
- link "💽 Jak připojit nový SSD disk v EndeavourOS Určíme přidaný disk (dle názvu či velikosti), v mém případě ... 2026-04-28" [ref=e51] [cursor=pointer]:
|
||||
- /url: /article.php?slug=💽 Jak připojit nový SSD disk v EndeavourOS
|
||||
- heading "💽 Jak připojit nový SSD disk v EndeavourOS" [level=3] [ref=e52]
|
||||
- paragraph [ref=e53]: Určíme přidaný disk (dle názvu či velikosti), v mém případě ...
|
||||
- generic [ref=e54]: 2026-04-28
|
||||
- link "🧰 Jak lehce instalovat aplikace pomocí grafického správce Pamac Jak lehce instalovat aplikace pomocí grafického správce Pamac... 2026-04-28" [ref=e55] [cursor=pointer]:
|
||||
- /url: /article.php?slug=Jak lehce instalovat aplikace pomocí grafického správce Pamac
|
||||
- heading "🧰 Jak lehce instalovat aplikace pomocí grafického správce Pamac" [level=3] [ref=e56]
|
||||
- paragraph [ref=e57]: Jak lehce instalovat aplikace pomocí grafického správce Pamac...
|
||||
- generic [ref=e58]: 2026-04-28
|
||||
- link "💾 AUR packages a jak nainstalovat aplikaci pomocí YAY EndeavourOS jako všechny ostatní distribuce rodiny Arch Linuxnabízí obří seznam balíčků... 2026-04-28" [ref=e59] [cursor=pointer]:
|
||||
- /url: /article.php?slug=AUR packages a jak nainstalovat aplikaci pomocí YAY
|
||||
- heading "💾 AUR packages a jak nainstalovat aplikaci pomocí YAY" [level=3] [ref=e60]
|
||||
- paragraph [ref=e61]: EndeavourOS jako všechny ostatní distribuce rodiny Arch Linuxnabízí obří seznam balíčků...
|
||||
- generic [ref=e62]: 2026-04-28
|
||||
- link "🚨 Jak zapnout upozornění na nové aktualizace Jak zapnout upozornění na nové aktualizace... 2026-04-28" [ref=e63] [cursor=pointer]:
|
||||
- /url: /article.php?slug=Jak zapnout upozornění na nové aktualizace
|
||||
- heading "🚨 Jak zapnout upozornění na nové aktualizace" [level=3] [ref=e64]
|
||||
- paragraph [ref=e65]: Jak zapnout upozornění na nové aktualizace...
|
||||
- generic [ref=e66]: 2026-04-28
|
||||
- link "🐧 Linux pacman příkazy Linux pacman příkazy. Pacman je nedílnou součástí Arch Linuxu a distribucí na Arc... 2026-04-28" [ref=e67] [cursor=pointer]:
|
||||
- /url: /article.php?slug=🐧 Linux pacman příkazy
|
||||
- heading "🐧 Linux pacman příkazy" [level=3] [ref=e68]
|
||||
- paragraph [ref=e69]: Linux pacman příkazy. Pacman je nedílnou součástí Arch Linuxu a distribucí na Arc...
|
||||
- generic [ref=e70]: 2026-04-28
|
||||
- contentinfo [ref=e71]:
|
||||
- generic [ref=e72]:
|
||||
- paragraph [ref=e73]: © 2026 EndeavourOS CZ Komunita. Vytvořeno s láskou k Linuxu ❤️.
|
||||
- paragraph [ref=e74]:
|
||||
- link "Zásady ochrany osobních údajů" [ref=e75] [cursor=pointer]:
|
||||
- /url: /privacy-policy.php
|
||||
```
|
||||
|
||||
# Test source
|
||||
|
||||
```ts
|
||||
56 | });
|
||||
57 |
|
||||
58 | test('navigation to Krátké návody', async ({ page }) => {
|
||||
59 | await homePage.clickMenuItem('Krátké návody');
|
||||
60 | await expect(page).toHaveURL(new RegExp(`.*${homePage.url}/cheatsheet`));
|
||||
61 | });
|
||||
62 |
|
||||
63 | // Seznam externích odkazů, které chceme prověřit
|
||||
64 | // Nyní nejde nutno doopravit
|
||||
65 | // test('externí odkazy v menu jsou platné', async ({ page, request }) => {
|
||||
66 | // const homePage = new HomePage(page);
|
||||
67 | // await homePage.navigate();
|
||||
68 |
|
||||
69 | // Seznam externích odkazů, které chceme prověřit
|
||||
70 | // test('kontrola externích odkazů na zdraví (status 200)', async ({ page, request }) => {
|
||||
71 | // const homePage = new HomePage(page);
|
||||
72 | // await homePage.navigate();
|
||||
73 |
|
||||
74 | // for (const link of externalLinks) {
|
||||
75 | // // Ověříme, že text tlačítka je na stránce vidět
|
||||
76 | // const href = await homePage.getMenuItemHref(link.name);
|
||||
77 |
|
||||
78 | // // Ověříme, že href v HTML odpovídá tomu, co máme v datech
|
||||
79 | // expect(href).toBe(link.url);
|
||||
80 |
|
||||
81 | // // Provedeme rychlou kontrolu, zda link není "mrtvý"
|
||||
82 | // const response = await request.get(link.url);
|
||||
83 | // expect(response.ok(), `Odkaz ${link.name} na adrese ${link.url} vrací chybu!`).toBeTruthy();
|
||||
84 |
|
||||
85 | // console.log(`Log: Odkaz "${link.name}" je v pořádku.`);
|
||||
86 | // }
|
||||
87 | // });
|
||||
88 |
|
||||
89 | //funkční řešení - otevře web
|
||||
90 | test('externí Fórum -> odkaz má správnou adresu', async () => {
|
||||
91 | const href = await homePage.getMenuItemLinkHref('Fórum'); // Příklad
|
||||
92 | expect(href).toBe('https://forum.arch-linux.cz/');
|
||||
93 | });
|
||||
94 |
|
||||
95 | test('navigation to O nás', async ({ page }) => {
|
||||
96 | await homePage.clickMenuItem('O nás');
|
||||
97 | await expect(page).toHaveURL(new RegExp(`.*${homePage.url}/o-nas`));
|
||||
98 | });
|
||||
99 | });
|
||||
100 |
|
||||
101 | test.describe('Theme', () => {
|
||||
102 | let homePage: HomePage;
|
||||
103 |
|
||||
104 | test.beforeEach(async ({ page }) => {
|
||||
105 | homePage = new HomePage(page);
|
||||
106 | await homePage.navigate();
|
||||
107 | });
|
||||
108 | test('switch theme sun', async ({ page }) => {
|
||||
109 | await homePage.switchThemeFunction()
|
||||
110 | })
|
||||
111 |
|
||||
112 | })
|
||||
113 |
|
||||
114 | test.describe('Carts (Karty) na HomePage', () => {
|
||||
115 | let homePage: HomePage;
|
||||
116 |
|
||||
117 | test.beforeEach(async ({ page }) => {
|
||||
118 | homePage = new HomePage(page);
|
||||
119 | await homePage.navigate();
|
||||
120 | });
|
||||
121 |
|
||||
122 | // Otestuje textace na kartách
|
||||
123 | test('should display all cards correctly', async () => {
|
||||
124 | for (const card of homePageCards) {
|
||||
125 | // Používáme naši POM metodu pro každou kartu
|
||||
126 | await homePage.verifyCardContent(card.title, card.description);
|
||||
127 | }
|
||||
128 | });
|
||||
129 |
|
||||
130 | // test('should navigate after clicking on a specific card', async ({ page }) => {
|
||||
131 | // // Příklad pro jednu konkrétní kartu
|
||||
132 | // await homePage.clickCardButton('Lehkost a rychlost');
|
||||
133 | // // Zde by následoval expect na novou URL
|
||||
134 | // });
|
||||
135 | });
|
||||
136 | });
|
||||
137 | test.describe('dark', () => {
|
||||
138 | test('přepnutí ze světlého startu do tmavého režimu', async ({ page }) => {
|
||||
139 | // 1. FÁZE: Vynucení světlého režimu před startem
|
||||
140 | // EndeavourOS.cz je defaultně tmavý, takže mu musíme zakázat třídu 'dark'
|
||||
141 | await page.addInitScript(() => {
|
||||
142 | document.documentElement.classList.remove('dark');
|
||||
143 | window.localStorage.setItem('theme', 'light');
|
||||
144 | });
|
||||
145 |
|
||||
146 | // 2. FÁZE: Načtení stránky
|
||||
147 | await page.goto('https://endeavouros.cz');
|
||||
148 |
|
||||
149 | // Kontrola, že jsme skutečně začali ve světlém (třída 'dark' chybí)
|
||||
150 | await expect(page.locator('html')).not.toHaveClass(/dark/);
|
||||
151 |
|
||||
152 | // 3. FÁZE: Akce - kliknutí na přepínač
|
||||
153 | // Na webu EndeavourOS.cz je to obvykle tlačítko v menu nebo záhlaví
|
||||
154 | // Tip: Použijeme ARIA label nebo ikonu, pokud známe selektor
|
||||
155 | const themeSwitcher = page.locator('button.theme-switcher, .mode-switcher');
|
||||
> 156 | await themeSwitcher.click();
|
||||
| ^ Error: locator.click: Test timeout of 30000ms exceeded.
|
||||
157 |
|
||||
158 | // 4. FÁZE: Ověření výsledku
|
||||
159 | // Nyní by se měla třída 'dark' vrátit na své místo
|
||||
160 | await expect(page.locator('html')).toHaveClass(/dark/);
|
||||
161 |
|
||||
162 | // A můžeme ověřit, že se změnila barva pozadí na tmavou
|
||||
163 | await expect(page.locator('body')).toHaveCSS('background-color', 'rgb(25, 20, 36)');
|
||||
164 | });
|
||||
165 | test('přepnutí z light do dark', async ({ page }) => {
|
||||
166 | // Počkáme, až se web načte a ujistíme se, že je fakt světlý
|
||||
167 | const html = page.locator('html');
|
||||
168 | await html.evaluate(el => el.classList.remove('dark'));
|
||||
169 |
|
||||
170 | await expect(html).not.toHaveClass(/dark/);
|
||||
171 |
|
||||
172 | // Teď klikni na přepínač
|
||||
173 | await page.locator('.tlačítko-přepínače').click(); // Zde doplň svůj reálný selektor
|
||||
174 |
|
||||
175 | // A teď už musí být dark
|
||||
176 | await expect(html).toHaveClass(/dark/);
|
||||
177 | });
|
||||
178 | });
|
||||
179 |
|
||||
180 |
|
||||
181 |
|
||||
```
|
||||
|
Before Width: | Height: | Size: 83 KiB |
@@ -1,239 +0,0 @@
|
||||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: homePage.test.ts >> dark >> startuje přímo ve světlém režimu
|
||||
- Location: tests/homePage.test.ts:152:7
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Error: expect(locator).toHaveAttribute(expected) failed
|
||||
|
||||
Locator: locator('html')
|
||||
Expected: "light"
|
||||
Received: "dark"
|
||||
Timeout: 5000ms
|
||||
|
||||
Call log:
|
||||
- Expect "toHaveAttribute" with timeout 5000ms
|
||||
- waiting for locator('html')
|
||||
9 × locator resolved to <html lang="cs" data-theme="dark">…</html>
|
||||
- unexpected value "dark"
|
||||
|
||||
```
|
||||
|
||||
# Page snapshot
|
||||
|
||||
```yaml
|
||||
- generic [active] [ref=e1]:
|
||||
- banner [ref=e2]:
|
||||
- generic [ref=e3]:
|
||||
- link "EndeavourOS Logo CZ" [ref=e4] [cursor=pointer]:
|
||||
- /url: /index.php
|
||||
- img "EndeavourOS Logo" [ref=e5]
|
||||
- generic [ref=e6]: CZ
|
||||
- navigation [ref=e7]:
|
||||
- list [ref=e8]:
|
||||
- listitem [ref=e9]:
|
||||
- link "Domů" [ref=e10] [cursor=pointer]:
|
||||
- /url: /index.php
|
||||
- listitem [ref=e11]:
|
||||
- link "EndeavourOS" [ref=e12] [cursor=pointer]:
|
||||
- /url: /endeavouros.php
|
||||
- listitem [ref=e13]:
|
||||
- link "Články" [ref=e14] [cursor=pointer]:
|
||||
- /url: /rozcestnik.php
|
||||
- listitem [ref=e15]:
|
||||
- link "Krátké návody" [ref=e16] [cursor=pointer]:
|
||||
- /url: /cheatsheet.php
|
||||
- listitem [ref=e17]:
|
||||
- link "Fórum" [ref=e18] [cursor=pointer]:
|
||||
- /url: https://forum.arch-linux.cz/
|
||||
- listitem [ref=e19]:
|
||||
- link "O nás" [ref=e20] [cursor=pointer]:
|
||||
- /url: /o-nas.php
|
||||
- generic [ref=e21]:
|
||||
- textbox "Hledat v článcích..." [ref=e23]
|
||||
- button "Sdílet stránku" [ref=e24] [cursor=pointer]:
|
||||
- generic [ref=e25]:
|
||||
- text: Sdílet
|
||||
- button "Přepnout téma" [ref=e26] [cursor=pointer]:
|
||||
- generic [ref=e27]:
|
||||
- main [ref=e28]:
|
||||
- generic [ref=e29]:
|
||||
- heading "🇨🇿 Vítám Tě na webu České komunity EndeavourOS! 🇨🇿" [level=1] [ref=e30]
|
||||
- paragraph [ref=e31]: Lehká, rychlá a moderní distribuce založená na Arch Linuxu.
|
||||
- heading "Je navržena tak, aby poskytovala uživatelům přístup k nejnovějším technologiím a softwaru, přičemž zachovává jednoduchost a stabilitu. Distribuce nabízí několik předinstalovaných prostředí." [level=4] [ref=e32]
|
||||
- heading "👇 Začínáme 👇" [level=2] [ref=e33]
|
||||
- generic [ref=e34]:
|
||||
- 'link "🚀 Přecházíme na Linux: Kompletní průvodce světem EndeavourOS a GNOME Máte pocit, že váš počítač s Windows je čím dál pomalejší? Štve vás, že si systém dělá, co chce, a vy nad ním nemáte kon... 2026-04-28" [ref=e35] [cursor=pointer]':
|
||||
- /url: "/article.php?slug=🚀 Přecházíme na Linux: Kompletní průvodce světem EndeavourOS a GNOME"
|
||||
- 'heading "🚀 Přecházíme na Linux: Kompletní průvodce světem EndeavourOS a GNOME" [level=3] [ref=e36]'
|
||||
- paragraph [ref=e37]: Máte pocit, že váš počítač s Windows je čím dál pomalejší? Štve vás, že si systém dělá, co chce, a vy nad ním nemáte kon...
|
||||
- generic [ref=e38]: 2026-04-28
|
||||
- link "⛵ Co je to ten Linux, EndeavourOS a GNOME? Malý slovníček pro úplné začátečníky Rozhodli jste se zkusit Linux, ale točí se vám hlava z názvů jako distribuce, prostředí, balíčky nebo AUR? Nebojte se. Ve světě Windows... 2026-04-28" [ref=e39] [cursor=pointer]:
|
||||
- /url: /article.php?slug=⛵ Co je to ten Linux, EndeavourOS a GNOME? Malý slovníček pro úplné začátečníky
|
||||
- heading "⛵ Co je to ten Linux, EndeavourOS a GNOME? Malý slovníček pro úplné začátečníky" [level=3] [ref=e40]
|
||||
- paragraph [ref=e41]: Rozhodli jste se zkusit Linux, ale točí se vám hlava z názvů jako distribuce, prostředí, balíčky nebo AUR? Nebojte se. Ve světě Windows...
|
||||
- generic [ref=e42]: 2026-04-28
|
||||
- 'link "🚀 Jak oživit počítač moderním systémem: Instalujeme EndeavourOS s GNOME Láká vás svět Linuxu, konkrétně pověstná rychlost a aktuálnost Arch Linuxu, ale odrazuje vás složitá instalace přes č... 2026-04-28" [ref=e43] [cursor=pointer]':
|
||||
- /url: "/article.php?slug=🚀 Jak oživit počítač moderním systémem: Instalujeme EndeavourOS s GNOME"
|
||||
- 'heading "🚀 Jak oživit počítač moderním systémem: Instalujeme EndeavourOS s GNOME" [level=3] [ref=e44]'
|
||||
- paragraph [ref=e45]: Láká vás svět Linuxu, konkrétně pověstná rychlost a aktuálnost Arch Linuxu, ale odrazuje vás složitá instalace přes č...
|
||||
- generic [ref=e46]: 2026-04-28
|
||||
- 'link "🔥 Záchranná brzda pro váš systém: Co je to LTS jádro a proč ho mít nainstalované Užíváte si rychlost EndeavourOS? Skvělé. Ale co když jednoho dne po aktualizaci zapnete počítač a nenaběhne grafika, nebo přesta... 2026-04-28" [ref=e47] [cursor=pointer]':
|
||||
- /url: "/article.php?slug=🔥 Záchranná brzda pro váš systém: Co je to LTS jádro a proč ho mít nainstalované"
|
||||
- 'heading "🔥 Záchranná brzda pro váš systém: Co je to LTS jádro a proč ho mít nainstalované" [level=3] [ref=e48]'
|
||||
- paragraph [ref=e49]: Užíváte si rychlost EndeavourOS? Skvělé. Ale co když jednoho dne po aktualizaci zapnete počítač a nenaběhne grafika, nebo přesta...
|
||||
- generic [ref=e50]: 2026-04-28
|
||||
- link "💽 Jak připojit nový SSD disk v EndeavourOS Určíme přidaný disk (dle názvu či velikosti), v mém případě ... 2026-04-28" [ref=e51] [cursor=pointer]:
|
||||
- /url: /article.php?slug=💽 Jak připojit nový SSD disk v EndeavourOS
|
||||
- heading "💽 Jak připojit nový SSD disk v EndeavourOS" [level=3] [ref=e52]
|
||||
- paragraph [ref=e53]: Určíme přidaný disk (dle názvu či velikosti), v mém případě ...
|
||||
- generic [ref=e54]: 2026-04-28
|
||||
- link "🧰 Jak lehce instalovat aplikace pomocí grafického správce Pamac Jak lehce instalovat aplikace pomocí grafického správce Pamac... 2026-04-28" [ref=e55] [cursor=pointer]:
|
||||
- /url: /article.php?slug=Jak lehce instalovat aplikace pomocí grafického správce Pamac
|
||||
- heading "🧰 Jak lehce instalovat aplikace pomocí grafického správce Pamac" [level=3] [ref=e56]
|
||||
- paragraph [ref=e57]: Jak lehce instalovat aplikace pomocí grafického správce Pamac...
|
||||
- generic [ref=e58]: 2026-04-28
|
||||
- link "💾 AUR packages a jak nainstalovat aplikaci pomocí YAY EndeavourOS jako všechny ostatní distribuce rodiny Arch Linuxnabízí obří seznam balíčků... 2026-04-28" [ref=e59] [cursor=pointer]:
|
||||
- /url: /article.php?slug=AUR packages a jak nainstalovat aplikaci pomocí YAY
|
||||
- heading "💾 AUR packages a jak nainstalovat aplikaci pomocí YAY" [level=3] [ref=e60]
|
||||
- paragraph [ref=e61]: EndeavourOS jako všechny ostatní distribuce rodiny Arch Linuxnabízí obří seznam balíčků...
|
||||
- generic [ref=e62]: 2026-04-28
|
||||
- link "🚨 Jak zapnout upozornění na nové aktualizace Jak zapnout upozornění na nové aktualizace... 2026-04-28" [ref=e63] [cursor=pointer]:
|
||||
- /url: /article.php?slug=Jak zapnout upozornění na nové aktualizace
|
||||
- heading "🚨 Jak zapnout upozornění na nové aktualizace" [level=3] [ref=e64]
|
||||
- paragraph [ref=e65]: Jak zapnout upozornění na nové aktualizace...
|
||||
- generic [ref=e66]: 2026-04-28
|
||||
- link "🐧 Linux pacman příkazy Linux pacman příkazy. Pacman je nedílnou součástí Arch Linuxu a distribucí na Arc... 2026-04-28" [ref=e67] [cursor=pointer]:
|
||||
- /url: /article.php?slug=🐧 Linux pacman příkazy
|
||||
- heading "🐧 Linux pacman příkazy" [level=3] [ref=e68]
|
||||
- paragraph [ref=e69]: Linux pacman příkazy. Pacman je nedílnou součástí Arch Linuxu a distribucí na Arc...
|
||||
- generic [ref=e70]: 2026-04-28
|
||||
- contentinfo [ref=e71]:
|
||||
- generic [ref=e72]:
|
||||
- paragraph [ref=e73]: © 2026 EndeavourOS CZ Komunita. Vytvořeno s láskou k Linuxu ❤️.
|
||||
- paragraph [ref=e74]:
|
||||
- link "Zásady ochrany osobních údajů" [ref=e75] [cursor=pointer]:
|
||||
- /url: /privacy-policy.php
|
||||
```
|
||||
|
||||
# Test source
|
||||
|
||||
```ts
|
||||
54 | await homePage.clickMenuItem('Články');
|
||||
55 | await expect(page).toHaveURL(new RegExp(`.*${homePage.url}/rozcestnik`));
|
||||
56 | });
|
||||
57 |
|
||||
58 | test('navigation to Krátké návody', async ({ page }) => {
|
||||
59 | await homePage.clickMenuItem('Krátké návody');
|
||||
60 | await expect(page).toHaveURL(new RegExp(`.*${homePage.url}/cheatsheet`));
|
||||
61 | });
|
||||
62 |
|
||||
63 | // Seznam externích odkazů, které chceme prověřit
|
||||
64 | // Nyní nejde nutno doopravit
|
||||
65 | // test('externí odkazy v menu jsou platné', async ({ page, request }) => {
|
||||
66 | // const homePage = new HomePage(page);
|
||||
67 | // await homePage.navigate();
|
||||
68 |
|
||||
69 | // Seznam externích odkazů, které chceme prověřit
|
||||
70 | // test('kontrola externích odkazů na zdraví (status 200)', async ({ page, request }) => {
|
||||
71 | // const homePage = new HomePage(page);
|
||||
72 | // await homePage.navigate();
|
||||
73 |
|
||||
74 | // for (const link of externalLinks) {
|
||||
75 | // // Ověříme, že text tlačítka je na stránce vidět
|
||||
76 | // const href = await homePage.getMenuItemHref(link.name);
|
||||
77 |
|
||||
78 | // // Ověříme, že href v HTML odpovídá tomu, co máme v datech
|
||||
79 | // expect(href).toBe(link.url);
|
||||
80 |
|
||||
81 | // // Provedeme rychlou kontrolu, zda link není "mrtvý"
|
||||
82 | // const response = await request.get(link.url);
|
||||
83 | // expect(response.ok(), `Odkaz ${link.name} na adrese ${link.url} vrací chybu!`).toBeTruthy();
|
||||
84 |
|
||||
85 | // console.log(`Log: Odkaz "${link.name}" je v pořádku.`);
|
||||
86 | // }
|
||||
87 | // });
|
||||
88 |
|
||||
89 | //funkční řešení - otevře web
|
||||
90 | test('externí Fórum -> odkaz má správnou adresu', async () => {
|
||||
91 | const href = await homePage.getMenuItemLinkHref('Fórum'); // Příklad
|
||||
92 | expect(href).toBe('https://forum.arch-linux.cz/');
|
||||
93 | });
|
||||
94 |
|
||||
95 | test('navigation to O nás', async ({ page }) => {
|
||||
96 | await homePage.clickMenuItem('O nás');
|
||||
97 | await expect(page).toHaveURL(new RegExp(`.*${homePage.url}/o-nas`));
|
||||
98 | });
|
||||
99 | });
|
||||
100 |
|
||||
101 | test.describe('Theme', () => {
|
||||
102 | let homePage: HomePage;
|
||||
103 |
|
||||
104 | test.beforeEach(async ({ page }) => {
|
||||
105 | homePage = new HomePage(page);
|
||||
106 | await homePage.navigate();
|
||||
107 | });
|
||||
108 | test('switch theme sun', async ({ page }) => {
|
||||
109 | await homePage.switchThemeFunction()
|
||||
110 | })
|
||||
111 |
|
||||
112 | })
|
||||
113 |
|
||||
114 | test.describe('Carts (Karty) na HomePage', () => {
|
||||
115 | let homePage: HomePage;
|
||||
116 |
|
||||
117 | test.beforeEach(async ({ page }) => {
|
||||
118 | homePage = new HomePage(page);
|
||||
119 | await homePage.navigate();
|
||||
120 | });
|
||||
121 |
|
||||
122 | // Otestuje textace na kartách
|
||||
123 | test('should display all cards correctly', async () => {
|
||||
124 | for (const card of homePageCards) {
|
||||
125 | // Používáme naši POM metodu pro každou kartu
|
||||
126 | await homePage.verifyCardContent(card.title, card.description);
|
||||
127 | }
|
||||
128 | });
|
||||
129 |
|
||||
130 | // test('should navigate after clicking on a specific card', async ({ page }) => {
|
||||
131 | // // Příklad pro jednu konkrétní kartu
|
||||
132 | // await homePage.clickCardButton('Lehkost a rychlost');
|
||||
133 | // // Zde by následoval expect na novou URL
|
||||
134 | // });
|
||||
135 | });
|
||||
136 | });
|
||||
137 | test.describe('dark', () => {
|
||||
138 | test.beforeEach(async ({ page }) => {
|
||||
139 | await page.emulateMedia({ colorScheme: 'light' });
|
||||
140 | // 1. NEJDŘÍV připravíme prostředí (vstříkneme skript)
|
||||
141 | await page.addInitScript(() => {
|
||||
142 | // Nastavíme atribut, podle kterého web barví
|
||||
143 | document.documentElement.setAttribute('data-theme', 'light');
|
||||
144 | // A preventivně i localStorage, kdyby si to web kontroloval tam
|
||||
145 | //window.localStorage.setItem('theme', 'light');
|
||||
146 | });
|
||||
147 |
|
||||
148 | // 2. POTÉ teprve jdeme na web
|
||||
149 | await page.goto('https://endeavouros.cz');
|
||||
150 | });
|
||||
151 |
|
||||
152 | test('startuje přímo ve světlém režimu', async ({ page }) => {
|
||||
153 | // Nyní už rovnou ověřuješ, že je vše světlé
|
||||
> 154 | await expect(page.locator('html')).toHaveAttribute('data-theme', 'light');
|
||||
| ^ Error: expect(locator).toHaveAttribute(expected) failed
|
||||
155 | });
|
||||
156 |
|
||||
157 |
|
||||
158 | });
|
||||
159 |
|
||||
160 |
|
||||
161 |
|
||||
```
|
||||
|
Before Width: | Height: | Size: 83 KiB |
@@ -1,238 +0,0 @@
|
||||
# Instructions
|
||||
|
||||
- Following Playwright test failed.
|
||||
- Explain why, be concise, respect Playwright best practices.
|
||||
- Provide a snippet of code with the fix, if possible.
|
||||
|
||||
# Test info
|
||||
|
||||
- Name: homePage.test.ts >> přepnutí ze světlého startu do tmavého režimu
|
||||
- Location: tests/homePage.test.ts:137:5
|
||||
|
||||
# Error details
|
||||
|
||||
```
|
||||
Test timeout of 30000ms exceeded.
|
||||
```
|
||||
|
||||
```
|
||||
Error: locator.click: Test timeout of 30000ms exceeded.
|
||||
Call log:
|
||||
- waiting for locator('button.theme-switcher, .mode-switcher')
|
||||
|
||||
```
|
||||
|
||||
# Page snapshot
|
||||
|
||||
```yaml
|
||||
- generic [active] [ref=e1]:
|
||||
- banner [ref=e2]:
|
||||
- generic [ref=e3]:
|
||||
- link "EndeavourOS Logo CZ" [ref=e4] [cursor=pointer]:
|
||||
- /url: /index.php
|
||||
- img "EndeavourOS Logo" [ref=e5]
|
||||
- generic [ref=e6]: CZ
|
||||
- navigation [ref=e7]:
|
||||
- list [ref=e8]:
|
||||
- listitem [ref=e9]:
|
||||
- link "Domů" [ref=e10] [cursor=pointer]:
|
||||
- /url: /index.php
|
||||
- listitem [ref=e11]:
|
||||
- link "EndeavourOS" [ref=e12] [cursor=pointer]:
|
||||
- /url: /endeavouros.php
|
||||
- listitem [ref=e13]:
|
||||
- link "Články" [ref=e14] [cursor=pointer]:
|
||||
- /url: /rozcestnik.php
|
||||
- listitem [ref=e15]:
|
||||
- link "Krátké návody" [ref=e16] [cursor=pointer]:
|
||||
- /url: /cheatsheet.php
|
||||
- listitem [ref=e17]:
|
||||
- link "Fórum" [ref=e18] [cursor=pointer]:
|
||||
- /url: https://forum.arch-linux.cz/
|
||||
- listitem [ref=e19]:
|
||||
- link "O nás" [ref=e20] [cursor=pointer]:
|
||||
- /url: /o-nas.php
|
||||
- generic [ref=e21]:
|
||||
- textbox "Hledat v článcích..." [ref=e23]
|
||||
- button "Sdílet stránku" [ref=e24] [cursor=pointer]:
|
||||
- generic [ref=e25]:
|
||||
- text: Sdílet
|
||||
- button "Přepnout téma" [ref=e26] [cursor=pointer]:
|
||||
- generic [ref=e27]:
|
||||
- main [ref=e28]:
|
||||
- generic [ref=e29]:
|
||||
- heading "🇨🇿 Vítám Tě na webu České komunity EndeavourOS! 🇨🇿" [level=1] [ref=e30]
|
||||
- paragraph [ref=e31]: Lehká, rychlá a moderní distribuce založená na Arch Linuxu.
|
||||
- heading "Je navržena tak, aby poskytovala uživatelům přístup k nejnovějším technologiím a softwaru, přičemž zachovává jednoduchost a stabilitu. Distribuce nabízí několik předinstalovaných prostředí." [level=4] [ref=e32]
|
||||
- heading "👇 Začínáme 👇" [level=2] [ref=e33]
|
||||
- generic [ref=e34]:
|
||||
- 'link "🚀 Přecházíme na Linux: Kompletní průvodce světem EndeavourOS a GNOME Máte pocit, že váš počítač s Windows je čím dál pomalejší? Štve vás, že si systém dělá, co chce, a vy nad ním nemáte kon... 2026-04-28" [ref=e35] [cursor=pointer]':
|
||||
- /url: "/article.php?slug=🚀 Přecházíme na Linux: Kompletní průvodce světem EndeavourOS a GNOME"
|
||||
- 'heading "🚀 Přecházíme na Linux: Kompletní průvodce světem EndeavourOS a GNOME" [level=3] [ref=e36]'
|
||||
- paragraph [ref=e37]: Máte pocit, že váš počítač s Windows je čím dál pomalejší? Štve vás, že si systém dělá, co chce, a vy nad ním nemáte kon...
|
||||
- generic [ref=e38]: 2026-04-28
|
||||
- link "⛵ Co je to ten Linux, EndeavourOS a GNOME? Malý slovníček pro úplné začátečníky Rozhodli jste se zkusit Linux, ale točí se vám hlava z názvů jako distribuce, prostředí, balíčky nebo AUR? Nebojte se. Ve světě Windows... 2026-04-28" [ref=e39] [cursor=pointer]:
|
||||
- /url: /article.php?slug=⛵ Co je to ten Linux, EndeavourOS a GNOME? Malý slovníček pro úplné začátečníky
|
||||
- heading "⛵ Co je to ten Linux, EndeavourOS a GNOME? Malý slovníček pro úplné začátečníky" [level=3] [ref=e40]
|
||||
- paragraph [ref=e41]: Rozhodli jste se zkusit Linux, ale točí se vám hlava z názvů jako distribuce, prostředí, balíčky nebo AUR? Nebojte se. Ve světě Windows...
|
||||
- generic [ref=e42]: 2026-04-28
|
||||
- 'link "🚀 Jak oživit počítač moderním systémem: Instalujeme EndeavourOS s GNOME Láká vás svět Linuxu, konkrétně pověstná rychlost a aktuálnost Arch Linuxu, ale odrazuje vás složitá instalace přes č... 2026-04-28" [ref=e43] [cursor=pointer]':
|
||||
- /url: "/article.php?slug=🚀 Jak oživit počítač moderním systémem: Instalujeme EndeavourOS s GNOME"
|
||||
- 'heading "🚀 Jak oživit počítač moderním systémem: Instalujeme EndeavourOS s GNOME" [level=3] [ref=e44]'
|
||||
- paragraph [ref=e45]: Láká vás svět Linuxu, konkrétně pověstná rychlost a aktuálnost Arch Linuxu, ale odrazuje vás složitá instalace přes č...
|
||||
- generic [ref=e46]: 2026-04-28
|
||||
- 'link "🔥 Záchranná brzda pro váš systém: Co je to LTS jádro a proč ho mít nainstalované Užíváte si rychlost EndeavourOS? Skvělé. Ale co když jednoho dne po aktualizaci zapnete počítač a nenaběhne grafika, nebo přesta... 2026-04-28" [ref=e47] [cursor=pointer]':
|
||||
- /url: "/article.php?slug=🔥 Záchranná brzda pro váš systém: Co je to LTS jádro a proč ho mít nainstalované"
|
||||
- 'heading "🔥 Záchranná brzda pro váš systém: Co je to LTS jádro a proč ho mít nainstalované" [level=3] [ref=e48]'
|
||||
- paragraph [ref=e49]: Užíváte si rychlost EndeavourOS? Skvělé. Ale co když jednoho dne po aktualizaci zapnete počítač a nenaběhne grafika, nebo přesta...
|
||||
- generic [ref=e50]: 2026-04-28
|
||||
- link "💽 Jak připojit nový SSD disk v EndeavourOS Určíme přidaný disk (dle názvu či velikosti), v mém případě ... 2026-04-28" [ref=e51] [cursor=pointer]:
|
||||
- /url: /article.php?slug=💽 Jak připojit nový SSD disk v EndeavourOS
|
||||
- heading "💽 Jak připojit nový SSD disk v EndeavourOS" [level=3] [ref=e52]
|
||||
- paragraph [ref=e53]: Určíme přidaný disk (dle názvu či velikosti), v mém případě ...
|
||||
- generic [ref=e54]: 2026-04-28
|
||||
- link "🧰 Jak lehce instalovat aplikace pomocí grafického správce Pamac Jak lehce instalovat aplikace pomocí grafického správce Pamac... 2026-04-28" [ref=e55] [cursor=pointer]:
|
||||
- /url: /article.php?slug=Jak lehce instalovat aplikace pomocí grafického správce Pamac
|
||||
- heading "🧰 Jak lehce instalovat aplikace pomocí grafického správce Pamac" [level=3] [ref=e56]
|
||||
- paragraph [ref=e57]: Jak lehce instalovat aplikace pomocí grafického správce Pamac...
|
||||
- generic [ref=e58]: 2026-04-28
|
||||
- link "💾 AUR packages a jak nainstalovat aplikaci pomocí YAY EndeavourOS jako všechny ostatní distribuce rodiny Arch Linuxnabízí obří seznam balíčků... 2026-04-28" [ref=e59] [cursor=pointer]:
|
||||
- /url: /article.php?slug=AUR packages a jak nainstalovat aplikaci pomocí YAY
|
||||
- heading "💾 AUR packages a jak nainstalovat aplikaci pomocí YAY" [level=3] [ref=e60]
|
||||
- paragraph [ref=e61]: EndeavourOS jako všechny ostatní distribuce rodiny Arch Linuxnabízí obří seznam balíčků...
|
||||
- generic [ref=e62]: 2026-04-28
|
||||
- link "🚨 Jak zapnout upozornění na nové aktualizace Jak zapnout upozornění na nové aktualizace... 2026-04-28" [ref=e63] [cursor=pointer]:
|
||||
- /url: /article.php?slug=Jak zapnout upozornění na nové aktualizace
|
||||
- heading "🚨 Jak zapnout upozornění na nové aktualizace" [level=3] [ref=e64]
|
||||
- paragraph [ref=e65]: Jak zapnout upozornění na nové aktualizace...
|
||||
- generic [ref=e66]: 2026-04-28
|
||||
- link "🐧 Linux pacman příkazy Linux pacman příkazy. Pacman je nedílnou součástí Arch Linuxu a distribucí na Arc... 2026-04-28" [ref=e67] [cursor=pointer]:
|
||||
- /url: /article.php?slug=🐧 Linux pacman příkazy
|
||||
- heading "🐧 Linux pacman příkazy" [level=3] [ref=e68]
|
||||
- paragraph [ref=e69]: Linux pacman příkazy. Pacman je nedílnou součástí Arch Linuxu a distribucí na Arc...
|
||||
- generic [ref=e70]: 2026-04-28
|
||||
- contentinfo [ref=e71]:
|
||||
- generic [ref=e72]:
|
||||
- paragraph [ref=e73]: © 2026 EndeavourOS CZ Komunita. Vytvořeno s láskou k Linuxu ❤️.
|
||||
- paragraph [ref=e74]:
|
||||
- link "Zásady ochrany osobních údajů" [ref=e75] [cursor=pointer]:
|
||||
- /url: /privacy-policy.php
|
||||
```
|
||||
|
||||
# Test source
|
||||
|
||||
```ts
|
||||
55 | await expect(page).toHaveURL(new RegExp(`.*${homePage.url}/rozcestnik`));
|
||||
56 | });
|
||||
57 |
|
||||
58 | test('navigation to Krátké návody', async ({ page }) => {
|
||||
59 | await homePage.clickMenuItem('Krátké návody');
|
||||
60 | await expect(page).toHaveURL(new RegExp(`.*${homePage.url}/cheatsheet`));
|
||||
61 | });
|
||||
62 |
|
||||
63 | // Seznam externích odkazů, které chceme prověřit
|
||||
64 | // Nyní nejde nutno doopravit
|
||||
65 | // test('externí odkazy v menu jsou platné', async ({ page, request }) => {
|
||||
66 | // const homePage = new HomePage(page);
|
||||
67 | // await homePage.navigate();
|
||||
68 |
|
||||
69 | // Seznam externích odkazů, které chceme prověřit
|
||||
70 | // test('kontrola externích odkazů na zdraví (status 200)', async ({ page, request }) => {
|
||||
71 | // const homePage = new HomePage(page);
|
||||
72 | // await homePage.navigate();
|
||||
73 |
|
||||
74 | // for (const link of externalLinks) {
|
||||
75 | // // Ověříme, že text tlačítka je na stránce vidět
|
||||
76 | // const href = await homePage.getMenuItemHref(link.name);
|
||||
77 |
|
||||
78 | // // Ověříme, že href v HTML odpovídá tomu, co máme v datech
|
||||
79 | // expect(href).toBe(link.url);
|
||||
80 |
|
||||
81 | // // Provedeme rychlou kontrolu, zda link není "mrtvý"
|
||||
82 | // const response = await request.get(link.url);
|
||||
83 | // expect(response.ok(), `Odkaz ${link.name} na adrese ${link.url} vrací chybu!`).toBeTruthy();
|
||||
84 |
|
||||
85 | // console.log(`Log: Odkaz "${link.name}" je v pořádku.`);
|
||||
86 | // }
|
||||
87 | // });
|
||||
88 |
|
||||
89 | //funkční řešení - otevře web
|
||||
90 | test('externí Fórum -> odkaz má správnou adresu', async () => {
|
||||
91 | const href = await homePage.getMenuItemLinkHref('Fórum'); // Příklad
|
||||
92 | expect(href).toBe('https://forum.arch-linux.cz/');
|
||||
93 | });
|
||||
94 |
|
||||
95 | test('navigation to O nás', async ({ page }) => {
|
||||
96 | await homePage.clickMenuItem('O nás');
|
||||
97 | await expect(page).toHaveURL(new RegExp(`.*${homePage.url}/o-nas`));
|
||||
98 | });
|
||||
99 | });
|
||||
100 |
|
||||
101 | test.describe('Theme', () => {
|
||||
102 | let homePage: HomePage;
|
||||
103 |
|
||||
104 | test.beforeEach(async ({ page }) => {
|
||||
105 | homePage = new HomePage(page);
|
||||
106 | await homePage.navigate();
|
||||
107 | });
|
||||
108 | test('switch theme sun', async ({ page }) => {
|
||||
109 | await homePage.switchThemeFunction()
|
||||
110 | })
|
||||
111 |
|
||||
112 | })
|
||||
113 |
|
||||
114 | test.describe('Carts (Karty) na HomePage', () => {
|
||||
115 | let homePage: HomePage;
|
||||
116 |
|
||||
117 | test.beforeEach(async ({ page }) => {
|
||||
118 | homePage = new HomePage(page);
|
||||
119 | await homePage.navigate();
|
||||
120 | });
|
||||
121 |
|
||||
122 | // Otestuje textace na kartách
|
||||
123 | test('should display all cards correctly', async () => {
|
||||
124 | for (const card of homePageCards) {
|
||||
125 | // Používáme naši POM metodu pro každou kartu
|
||||
126 | await homePage.verifyCardContent(card.title, card.description);
|
||||
127 | }
|
||||
128 | });
|
||||
129 |
|
||||
130 | // test('should navigate after clicking on a specific card', async ({ page }) => {
|
||||
131 | // // Příklad pro jednu konkrétní kartu
|
||||
132 | // await homePage.clickCardButton('Lehkost a rychlost');
|
||||
133 | // // Zde by následoval expect na novou URL
|
||||
134 | // });
|
||||
135 | });
|
||||
136 | });
|
||||
137 | test('přepnutí ze světlého startu do tmavého režimu', async ({ page }) => {
|
||||
138 | // 1. FÁZE: Vynucení světlého režimu před startem
|
||||
139 | // EndeavourOS.cz je defaultně tmavý, takže mu musíme zakázat třídu 'dark'
|
||||
140 | await page.addInitScript(() => {
|
||||
141 | document.documentElement.classList.remove('dark');
|
||||
142 | window.localStorage.setItem('theme', 'light');
|
||||
143 | });
|
||||
144 |
|
||||
145 | // 2. FÁZE: Načtení stránky
|
||||
146 | await page.goto('https://endeavouros.cz');
|
||||
147 |
|
||||
148 | // Kontrola, že jsme skutečně začali ve světlém (třída 'dark' chybí)
|
||||
149 | await expect(page.locator('html')).not.toHaveClass(/dark/);
|
||||
150 |
|
||||
151 | // 3. FÁZE: Akce - kliknutí na přepínač
|
||||
152 | // Na webu EndeavourOS.cz je to obvykle tlačítko v menu nebo záhlaví
|
||||
153 | // Tip: Použijeme ARIA label nebo ikonu, pokud známe selektor
|
||||
154 | const themeSwitcher = page.locator('button.theme-switcher, .mode-switcher');
|
||||
> 155 | await themeSwitcher.click();
|
||||
| ^ Error: locator.click: Test timeout of 30000ms exceeded.
|
||||
156 |
|
||||
157 | // 4. FÁZE: Ověření výsledku
|
||||
158 | // Nyní by se měla třída 'dark' vrátit na své místo
|
||||
159 | await expect(page.locator('html')).toHaveClass(/dark/);
|
||||
160 |
|
||||
161 | // A můžeme ověřit, že se změnila barva pozadí na tmavou
|
||||
162 | await expect(page.locator('body')).toHaveCSS('background-color', 'rgb(25, 20, 36)');
|
||||
163 | });
|
||||
164 |
|
||||
165 |
|
||||
166 |
|
||||
```
|
||||
|
Before Width: | Height: | Size: 83 KiB |
|
Before Width: | Height: | Size: 83 KiB |
@@ -122,56 +122,83 @@ test.describe('EndeavourOS HomePage - POM', () => {
|
||||
// // Zde by následoval expect na novou URL
|
||||
// });
|
||||
});
|
||||
|
||||
test.describe('Theme', () => {
|
||||
test.describe('Theme -- dark default to light', () => {
|
||||
let homePage: HomePage;
|
||||
|
||||
test.beforeEach(async ({ page }) => {
|
||||
homePage = new HomePage(page);
|
||||
await homePage.navigate();
|
||||
});
|
||||
test('switch theme sun', async ({ page }) => {
|
||||
await homePage.switchThemeFunctionLight()
|
||||
});
|
||||
|
||||
});
|
||||
test.describe('Mock date light', () => {
|
||||
test('vynucený start ve světlém režimu + kontrola režimu', async ({ page }) => {
|
||||
// 1. Nastavíme emulaci systému na light (to je základ)
|
||||
await page.emulateMedia({ colorScheme: 'light' });
|
||||
|
||||
// 2. Mockujeme stav paměti a DOMu
|
||||
await page.addInitScript(() => {
|
||||
// Vnutíme informaci, že chceme light do paměti
|
||||
window.localStorage.setItem('theme', 'light');
|
||||
window.localStorage.setItem('color-theme', 'light'); // Pro jistotu oba běžné názvy
|
||||
|
||||
// Tady je ten trik: Sledujeme, kdyby se web snažil přidat 'dark' a hned to smažeme
|
||||
const observer = new MutationObserver(() => {
|
||||
if (document.documentElement.classList.contains('dark')) {
|
||||
document.documentElement.classList.remove('dark');
|
||||
}
|
||||
});
|
||||
observer.observe(document.documentElement, { attributes: true, attributeFilter: ['class'] });
|
||||
});
|
||||
|
||||
// 3. Jdeme na web
|
||||
await page.goto('https://endeavouros.cz');
|
||||
|
||||
// 4. OVĚŘENÍ: Teď už musí být světlý
|
||||
const html = page.locator('html');
|
||||
await expect(html).not.toHaveClass(/dark/);
|
||||
|
||||
// Vizuální kontrola - barva pozadí by teď měla být bílá/světlá (rgb 255, 255, 255)
|
||||
// Poznámka: Pokud má web i ve světlém režimu jinou barvu, uprav si rgb hodnotu
|
||||
await expect(page.locator('body')).toHaveCSS('background-color', 'rgb(248, 249, 250)');
|
||||
await expect(page.locator('html')).toHaveAttribute('data-theme', 'light');
|
||||
|
||||
});
|
||||
test('Light to Dark check', async ({ page }) => {
|
||||
// 1. Nastavíme emulaci systému na light (to je základ)
|
||||
await page.emulateMedia({ colorScheme: 'light' });
|
||||
|
||||
// 2. Mockujeme stav paměti a DOMu
|
||||
await page.addInitScript(() => {
|
||||
// Vnutíme informaci, že chceme light do paměti
|
||||
window.localStorage.setItem('theme', 'light');
|
||||
window.localStorage.setItem('color-theme', 'light'); // Pro jistotu oba běžné názvy
|
||||
|
||||
// Tady je ten trik: Sledujeme, kdyby se web snažil přidat 'dark' a hned to smažeme
|
||||
const observer = new MutationObserver(() => {
|
||||
if (document.documentElement.classList.contains('dark')) {
|
||||
document.documentElement.classList.remove('dark');
|
||||
}
|
||||
});
|
||||
observer.observe(document.documentElement, { attributes: true, attributeFilter: ['class'] });
|
||||
});
|
||||
|
||||
// 3. Jdeme na web
|
||||
await page.goto('https://endeavouros.cz');
|
||||
|
||||
// 4. OVĚŘENÍ: Teď už musí být světlý
|
||||
const html = page.locator('html');
|
||||
await expect(html).not.toHaveClass(/dark/);
|
||||
await homePage.switchThemeFunctionDark()
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
|
||||
test.describe('Theme', () => {
|
||||
test.describe('Theme -- dark default to light', () => {
|
||||
let homePage: HomePage;
|
||||
|
||||
test.beforeEach(async ({ page }) => {
|
||||
homePage = new HomePage(page);
|
||||
await homePage.navigate();
|
||||
});
|
||||
test('switch theme sun', async ({ page }) => {
|
||||
await homePage.switchThemeFunction()
|
||||
});
|
||||
|
||||
});
|
||||
test.describe('Mock date light', () => {
|
||||
test('vynucený start ve světlém režimu + kontrola režimu', async ({ page }) => {
|
||||
// 1. Nastavíme emulaci systému na light (to je základ)
|
||||
await page.emulateMedia({ colorScheme: 'light' });
|
||||
|
||||
// 2. Mockujeme stav paměti a DOMu
|
||||
await page.addInitScript(() => {
|
||||
// Vnutíme informaci, že chceme light do paměti
|
||||
window.localStorage.setItem('theme', 'light');
|
||||
window.localStorage.setItem('color-theme', 'light'); // Pro jistotu oba běžné názvy
|
||||
|
||||
// Tady je ten trik: Sledujeme, kdyby se web snažil přidat 'dark' a hned to smažeme
|
||||
const observer = new MutationObserver(() => {
|
||||
if (document.documentElement.classList.contains('dark')) {
|
||||
document.documentElement.classList.remove('dark');
|
||||
}
|
||||
});
|
||||
observer.observe(document.documentElement, { attributes: true, attributeFilter: ['class'] });
|
||||
});
|
||||
|
||||
// 3. Jdeme na web
|
||||
await page.goto('https://endeavouros.cz');
|
||||
|
||||
// 4. OVĚŘENÍ: Teď už musí být světlý
|
||||
const html = page.locator('html');
|
||||
await expect(html).not.toHaveClass(/dark/);
|
||||
|
||||
// Vizuální kontrola - barva pozadí by teď měla být bílá/světlá (rgb 255, 255, 255)
|
||||
// Poznámka: Pokud má web i ve světlém režimu jinou barvu, uprav si rgb hodnotu
|
||||
await expect(page.locator('body')).toHaveCSS('background-color', 'rgb(248, 249, 250)');
|
||||
await expect(page.locator('html')).toHaveAttribute('data-theme', 'light');
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
});
|
||||
@@ -99,13 +99,18 @@ export class HomePage {
|
||||
/*
|
||||
* Test theme
|
||||
*/
|
||||
// Test Theme sun
|
||||
async switchThemeFunction() {
|
||||
// Test Theme Light
|
||||
async switchThemeFunctionLight() {
|
||||
const themeButton = this.page.locator('#themeToggle');
|
||||
await themeButton.click();
|
||||
await expect(this.page.locator('html')).toHaveAttribute('data-theme', 'light');
|
||||
|
||||
|
||||
}
|
||||
|
||||
// Test Theme Dark
|
||||
async switchThemeFunctionDark() {
|
||||
const themeButton = this.page.locator('#themeToggle');
|
||||
await themeButton.click();
|
||||
await expect(this.page.locator('html')).toHaveAttribute('data-theme', 'dark');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||