Zmiana nazwy na Polska Lokalnie, przyklejony naglowek i uklad stron konta
Nazwa i adres: - marka "Mieszko" -> "Polska Lokalnie" w calym interfejsie (27 miejsc), w tekstach zaleznych dodane slowo "serwis", zeby brzmialy poprawnie po polsku - domena mieszko.pl -> polskalokalnie.pl (adresy kontaktowe, profil, udostepnianie) - haslo pod logo: "mieszkania za darmo" -> "ogloszenia za darmo" - backend: teksty powiadomien, dane demo i domyslna nazwa admina - nazwa wyswietlana istniejacego admina zaktualizowana w bazie; login admin@mieszko.pl celowo bez zmian Naglowek: - logo, nawigacja i panel zostaja widoczne przy przewijaniu (position: sticky, warstwa 65 - nad listami rozwijanymi, pod lightboxem zdjec) - sticky sidebary z top: 18-20px wyrownane do 96px, zeby nie wjezdzaly pod naglowek Uklad stron konta: - /ulubione, /wiadomosci i /powiadomienia otwieraja sie jak /konto/wyszukiwania - wspolny layout AccountShell zamiast powielania ukladu w kazdej stronie - /konto/porownanie mialo wlasny uklad (sidebar 300px, inny gap i padding), przez co menu przeskakiwalo - wyrownane do .account-layout wraz z punktem zwijania (1200px zamiast 1500px) - narzedzia publiczne (/wycena, /historia-cen, /ranking-dzielnic, /negocjacje) bez menu konta - dzialaja jak /kupno czy /wynajem Naprawy regresji po zamianie przyciskow na linki: - ikona ulubionych na kartach /kupno wracala do przeplywu (nadpisany position: absolute) - teraz podnoszona jest tylko warstwa - menu uzytkownika i "Zobacz wszystkie" w powiadomieniach: reguly CSS celowaly tylko w <button>, przez co pozycje rozjezdzaly sie na dwie linie Testy: 47 (bylo 41), w tym zabezpieczenie przed powrotem przeskoku menu i przed rozjechaniem pozycji menu uzytkownika. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -247,3 +247,98 @@ test.describe('Trasy chronione', () => {
|
||||
await expect(page.locator('.not-found-page')).toBeVisible();
|
||||
});
|
||||
});
|
||||
|
||||
test.describe('Layout konta', () => {
|
||||
// Kazda pozycja lewego menu ma otwierac sie tak samo jak /konto/wyszukiwania,
|
||||
// czyli razem z widocznym menu konta.
|
||||
const ACCOUNT_PAGES = [
|
||||
ROUTES.account,
|
||||
ROUTES.accountSearches,
|
||||
ROUTES.favorites,
|
||||
ROUTES.accountPriceAlerts,
|
||||
ROUTES.comparison,
|
||||
ROUTES.messages,
|
||||
ROUTES.accountMeetings,
|
||||
ROUTES.accountListings,
|
||||
ROUTES.accountSettings,
|
||||
ROUTES.notifications,
|
||||
ROUTES.accountSecurity,
|
||||
ROUTES.accountHelpContact,
|
||||
];
|
||||
|
||||
// Narzedzia publiczne dzialaja jak /kupno czy /wynajem - bez menu konta.
|
||||
const PUBLIC_TOOLS = [ROUTES.valuation, ROUTES.priceHistory, ROUTES.districtRanking, ROUTES.negotiation];
|
||||
|
||||
test('lewe menu konta jest widoczne na wszystkich stronach konta', async ({ page }) => {
|
||||
await login(page);
|
||||
for (const path of ACCOUNT_PAGES) {
|
||||
await goto(page, path);
|
||||
await expect(page.locator('.account-sidebar'), `brak lewego menu na ${path}`).toBeVisible();
|
||||
}
|
||||
});
|
||||
|
||||
test('lewe menu nie przeskakuje miedzy stronami konta', async ({ page }) => {
|
||||
await login(page);
|
||||
const positions: Array<{ path: string; x: number; width: number }> = [];
|
||||
|
||||
for (const path of ACCOUNT_PAGES) {
|
||||
await goto(page, path);
|
||||
const box = await page.locator('.account-sidebar').first().boundingBox();
|
||||
positions.push({ path, x: Math.round(box!.x), width: Math.round(box!.width) });
|
||||
}
|
||||
|
||||
const first = positions[0];
|
||||
for (const pos of positions) {
|
||||
expect(pos.x, `menu przesuniete na ${pos.path}`).toBe(first.x);
|
||||
expect(pos.width, `inna szerokosc menu na ${pos.path}`).toBe(first.width);
|
||||
}
|
||||
});
|
||||
|
||||
test('narzedzia publiczne nie pokazuja menu konta - takze po zalogowaniu', async ({ page }) => {
|
||||
for (const path of PUBLIC_TOOLS) {
|
||||
await goto(page, path);
|
||||
await expect(page.locator('.account-sidebar'), `menu konta na publicznej ${path}`).toHaveCount(0);
|
||||
}
|
||||
|
||||
await login(page);
|
||||
for (const path of PUBLIC_TOOLS) {
|
||||
await goto(page, path);
|
||||
await expect(page.locator('.account-sidebar'), `menu konta na publicznej ${path}`).toHaveCount(0);
|
||||
}
|
||||
});
|
||||
|
||||
test('menu uzytkownika w naglowku ma pozycje ulozone w jednej linii', async ({ page }) => {
|
||||
await login(page);
|
||||
await goto(page, ROUTES.home);
|
||||
await page.locator('.account-menu-trigger').click();
|
||||
|
||||
const items = page.locator('.account-popover a');
|
||||
await expect(items.first()).toBeVisible();
|
||||
|
||||
for (let i = 0; i < await items.count(); i += 1) {
|
||||
const box = await items.nth(i).boundingBox();
|
||||
// ikona obok tekstu daje ~42px; zawiniecie do dwoch linii daje wyraznie wiecej
|
||||
expect(Math.round(box!.height), 'pozycja menu zawinela sie do dwoch linii').toBeLessThan(56);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
test.describe('Naglowek', () => {
|
||||
test('zostaje przyklejony do gory przy przewijaniu', async ({ page }) => {
|
||||
for (const path of [ROUTES.home, ROUTES.buy, ROUTES.guides]) {
|
||||
await goto(page, path);
|
||||
await page.evaluate(() => window.scrollTo(0, 1400));
|
||||
await page.waitForTimeout(300);
|
||||
const box = await page.locator('.header').boundingBox();
|
||||
expect(Math.round(box!.y), `naglowek odjechal na ${path}`).toBe(0);
|
||||
}
|
||||
});
|
||||
|
||||
test('logo prowadzi na strone glowna i pokazuje nowa nazwe', async ({ page }) => {
|
||||
await goto(page, ROUTES.buy);
|
||||
const brand = page.locator('a.brand');
|
||||
await expect(brand).toHaveAttribute('href', ROUTES.home);
|
||||
await expect(brand).toContainText('Polska Lokalnie');
|
||||
await expect(brand).toContainText('ogłoszenia za darmo');
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user