górne menu - wiadomości
Deploy Polska Lokalnie / deploy (push) Successful in 22s

This commit is contained in:
2026-09-25 10:09:33 +02:00
parent 517e80d6bd
commit cf02f480ed
22 changed files with 577 additions and 154 deletions
+80
View File
@@ -773,3 +773,83 @@ test.describe('Historia cen', () => {
await expect(page.locator('.history-chart-empty')).toContainText('Wybierz lokalizację');
});
});
// Minimalizacja danych (art. 5 ust. 1 lit. c RODO): w ustawieniach konta zbieramy tylko to,
// czego uzywa jakas funkcja serwisu. Data urodzenia zniknela calkowicie, adres zostal firmom.
test.describe('Zakres danych w ustawieniach konta', () => {
test('konto prywatne nie ma daty urodzenia ani adresu zamieszkania', async ({ page }) => {
await login(page);
await goto(page, ROUTES.accountSettings);
await expect(page.getByText('Data urodzenia')).toHaveCount(0);
await expect(page.getByText('Adres zamieszkania')).toHaveCount(0);
await expect(page.getByText('Adres siedziby')).toHaveCount(0);
// Pola, ktore maja zastosowanie, zostaja na miejscu.
await expect(page.getByText('Numer telefonu').first()).toBeVisible();
});
test('backend nie zapisze adresu przyslanego z konta prywatnego', async ({ page }) => {
await login(page);
const token = await page.evaluate(() => window.localStorage.getItem('polskalokalnie-auth-token'));
expect(token).toBeTruthy();
const me = await page.request.get('/api/auth/me', { headers: { Authorization: `Bearer ${token}` } }).then((r) => r.json());
expect(me.accountType).toBe('PERSONAL');
const updated = await page.request.put('/api/auth/me', {
headers: { Authorization: `Bearer ${token}` },
data: {
fullName: me.fullName,
phone: me.phone ?? undefined,
address: 'ul. Podrzucona 1, Warszawa',
contactPreference: me.contactPreference,
preferredLanguage: me.preferredLanguage,
},
}).then((r) => r.json());
expect(updated.address).toBeNull();
// Data urodzenia nie jest juz czescia profilu w API.
expect(updated.birthDate).toBeUndefined();
});
});
// Przelaczniki powiadomien maja realnie sterowac lista na /powiadomienia - nie byc ozdoba.
test.describe('Ustawienia powiadomien', () => {
test('w karcie nie ma martwych przelacznikow', async ({ page }) => {
await login(page);
await goto(page, ROUTES.accountSettings);
const card = page.locator('section[aria-label="Powiadomienia"]');
await expect(card).toBeVisible();
await expect(card).not.toContainText('Wkrótce');
// Kazdy przelacznik w karcie da sie klikac.
const switches = card.getByRole('switch');
await expect(switches).toHaveCount(5);
for (let index = 0; index < 5; index += 1) {
await expect(switches.nth(index)).toBeEnabled();
}
// Naglowek prowadzi na liste powiadomien.
await card.getByRole('link', { name: 'listę powiadomień' }).click();
await expect(page).toHaveURL(new RegExp(`${ROUTES.notifications}$`));
});
test('wylaczenie zapisanych wyszukiwan przezywa odswiezenie', async ({ page }) => {
await login(page);
await goto(page, ROUTES.accountSettings);
const row = page.locator('.toggle-row').filter({ hasText: 'Nowe oferty z zapisanych wyszukiwań' });
const toggle = row.getByRole('switch');
const wasOn = await toggle.getAttribute('aria-checked');
await toggle.click();
await page.waitForTimeout(700);
await page.reload();
await page.waitForTimeout(1200);
await expect(page.locator('.toggle-row').filter({ hasText: 'Nowe oferty z zapisanych wyszukiwań' }).getByRole('switch'))
.toHaveAttribute('aria-checked', wasOn === 'true' ? 'false' : 'true');
// Sprzatanie: wracamy do stanu sprzed testu.
await page.locator('.toggle-row').filter({ hasText: 'Nowe oferty z zapisanych wyszukiwań' }).getByRole('switch').click();
await page.waitForTimeout(700);
});
});