Initial release v1.0.0
Open-source marketplace for AI Agent skills. Features: - Next.js 15 web app with i18n (en/fa) - CLI tool for skill installation (npx skillhub) - GitHub crawler/indexer with multi-strategy discovery - Security scanning for all indexed skills - Self-hostable with Docker Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
39
apps/web/e2e/categories.spec.ts
Normal file
39
apps/web/e2e/categories.spec.ts
Normal file
@@ -0,0 +1,39 @@
|
||||
import { test, expect } from '@playwright/test';
|
||||
|
||||
test.describe('Categories Page', () => {
|
||||
test.beforeEach(async ({ page }) => {
|
||||
await page.goto('/categories');
|
||||
});
|
||||
|
||||
test('should display categories page', async ({ page }) => {
|
||||
// Categories page should have h1 heading with "Categories" or Persian equivalent
|
||||
const heading = page.locator('h1');
|
||||
await expect(heading).toBeVisible({ timeout: 10000 });
|
||||
// Page should load successfully (any content is fine, title may not include "categories")
|
||||
await expect(page).toHaveURL(/categories/);
|
||||
});
|
||||
|
||||
test('should list all categories', async ({ page }) => {
|
||||
// Wait for categories to load
|
||||
const categoryItems = page.locator('[data-testid="category-card"], .category-card, article, a[href*="/browse?category"]');
|
||||
await expect(categoryItems.first()).toBeVisible({ timeout: 10000 });
|
||||
});
|
||||
|
||||
test('should display category names', async ({ page }) => {
|
||||
// Categories should have readable names
|
||||
const categoryName = page.locator('h2, h3, [data-testid="category-name"]').first();
|
||||
await expect(categoryName).toBeVisible({ timeout: 10000 });
|
||||
});
|
||||
|
||||
test('should show skill count per category', async ({ page }) => {
|
||||
// Should show number of skills in each category
|
||||
const skillCount = page.locator('text=/\\d+\\s*(skill|skills)/i').first();
|
||||
await expect(skillCount).toBeVisible({ timeout: 10000 });
|
||||
});
|
||||
|
||||
test('should navigate to filtered browse page on category click', async ({ page }) => {
|
||||
const categoryLink = page.locator('a[href*="/browse?category"], a[href*="category="]').first();
|
||||
await categoryLink.click();
|
||||
await expect(page).toHaveURL(/category=/);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user