forgejo/tests/e2e/user-cards.test.e2e.ts
0ko 8b93f41aaa fix(ui): ensure same width of usercards in grid (#6799)
Followup to https://codeberg.org/forgejo/forgejo/pulls/4760

* some refactoring
    * move rules out of repo.css to a new module
    * simplify selectors by omitting .list: it is now only used to style the list itself, they're still precise enough in scope of .user-cards
* apply wrap/ellipsis to cards' content. Done via CSS to avoid spamming gt-ellipsis in the template
    * prevent cards with long content from taking horizontal space from other cards
    * prevent such cards from causing horizontal overflow on mobile
    * prevent varying card height, it doesn't look good even with text wrapping

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6799
Reviewed-by: Otto <otto@codeberg.org>
Co-authored-by: 0ko <0ko@noreply.codeberg.org>
Co-committed-by: 0ko <0ko@noreply.codeberg.org>
2025-05-25 13:31:53 +02:00

29 lines
882 B
TypeScript

// Copyright 2025 The Forgejo Authors. All rights reserved.
// SPDX-License-Identifier: GPL-3.0-or-later
// @watch start
// templates/repo/user_cards.tmpl
// web_src/css/modules/user-cards.css
// @watch end
import {expect} from '@playwright/test';
import {test} from './utils_e2e.ts';
test('Usercards width', async ({page}) => {
await page.goto('/user8?tab=followers');
// Regardless of whether cards in a grid or flex mode, they should be ~same
// width. Verifying this relies on fixtures with users that have long website
// link or other content that could push the card width.
const widths = [];
const amount = 3;
for (let i = 1; i <= amount; i++) {
const card = await page.locator(`.user-cards .card:nth-child(${i})`).boundingBox();
widths.push(Math.round(card.width));
}
for (const width of widths) {
expect(width).toBe(widths[0]);
}
});