Stream the media grid with a scroll buffer

This commit is contained in:
Fisto
2026-09-17 10:47:52 +02:00
parent efd721e83b
commit cc14140f34
6 changed files with 291 additions and 59 deletions
+27
View File
@@ -84,6 +84,33 @@ try {
);
step("broken images", broken);
check("no broken images", broken === 0, broken);
check("stream buffer present", (await page.locator(".vk-media-buffer").count()) === 1);
check("no load-more button", (await page.locator(".vk-media-load-more").count()) === 0);
// Infinite scroll: scrolling into the buffer appends cards without rebuilding the grid.
const beforeScroll = await page.locator(".vk-media-figure").count();
for (let attempt = 0; attempt < 3; attempt++) {
await page.locator("#media-grid").evaluate(node => {
node.scrollTop = node.scrollHeight;
});
await page.waitForTimeout(1200);
}
const afterScroll = await page.locator(".vk-media-figure").count();
step("infinite scroll", { before: beforeScroll, after: afterScroll });
check("infinite scroll appends cards", afterScroll > beforeScroll, {
before: beforeScroll,
after: afterScroll
});
check(
"appended cards do not corrupt loaded ones",
(await page.$$eval(".vk-media-figure .vk-media-media img", images =>
images.filter(image => image.complete && image.naturalWidth === 0).length
)) === 0
);
await page.locator("#media-grid").evaluate(node => {
node.scrollTop = 0;
});
await page.waitForTimeout(300);
await page.getByRole("button", { name: /^People/ }).click();
step("people checkboxes", await page.locator(".vk-media-people input").count());