fix: update tool count to 51, refresh hero copy and login page

- Update stale tool counts (48/49/50) to 51 across all apps, docs, and tests
- Add Meme Generator to landing page bento grid (was missing)
- Add 12 SEO-friendly rotating phrases to hero typing cursor
- Change landing hero subtitle to "Every image tool you need."
- Replace outdated login page copy with branded hero + rotating phrases
This commit is contained in:
SnapOtter
2026-05-10 22:18:11 +08:00
parent 32e7b03ab4
commit 172c0fa772
22 changed files with 125 additions and 52 deletions
+1 -1
View File
@@ -16,7 +16,7 @@ test.describe("Login Page", () => {
await expect(page.getByRole("button", { name: /login/i })).toBeVisible();
// Right side: marketing text (hidden on mobile, visible on lg+)
await expect(page.getByText("Your one-stop-shop")).toBeVisible();
await expect(page.getByText("Your images. Stay yours.")).toBeVisible();
});
test("username and password inputs start empty", async ({ page }) => {
+2 -2
View File
@@ -70,7 +70,7 @@ test.describe("Responsive - Desktop (1280x720)", () => {
await page.goto("/login");
await expect(page.getByRole("heading", { name: /login/i })).toBeVisible();
await expect(page.getByText("Your one-stop-shop")).toBeVisible();
await expect(page.getByText("Your images. Stay yours.")).toBeVisible();
await context.close();
});
@@ -405,7 +405,7 @@ test.describe("Responsive - Mobile (375x667)", () => {
await expect(page.getByLabel("Username")).toBeVisible();
// Marketing panel is hidden on mobile (lg:flex means only visible at lg+)
await expect(page.getByText("Your one-stop-shop")).not.toBeVisible();
await expect(page.getByText("Your images. Stay yours.")).not.toBeVisible();
const scrollWidth = await page.evaluate(() => document.documentElement.scrollWidth);
const clientWidth = await page.evaluate(() => document.documentElement.clientWidth);
+1 -1
View File
@@ -53,7 +53,7 @@ test.describe("Visual Mobile (375x667)", () => {
// Verify stacked layout: marketing panel should be hidden on mobile
await expect(page.getByRole("heading", { name: /login/i })).toBeVisible();
await expect(page.getByText("Your one-stop-shop")).not.toBeVisible();
await expect(page.getByText("Your images. Stay yours.")).not.toBeVisible();
await takeThemedScreenshots(page, "login-empty");
});
+1 -1
View File
@@ -9,7 +9,7 @@ test.describe("Smoke tests", () => {
await expect(page.getByLabel("Password")).toBeVisible();
await expect(page.getByRole("button", { name: /login/i })).toBeVisible();
// Right panel marketing text
await expect(page.getByText("Your one-stop-shop")).toBeVisible();
await expect(page.getByText("Your images. Stay yours.")).toBeVisible();
});
test("can log in with admin credentials", async ({ page }) => {