feat: Add comprehensive E2E tests with Playwright and enhance component test IDs
Add end-to-end testing infrastructure for the application: - Implemented Playwright E2E test suite with 31 passing tests across authentication and feature workflows - Created mock API fixtures for testing without requiring backend/database - Added data-testid attributes to major React components (Login, Register, TaskList, Events, SocialFeed, Profile, Navbar) - Set up test fixtures with test images (profile-pic.jpg, test-image.jpg) - Configured playwright.config.js for multi-browser testing (Chromium, Firefox, Safari) Test Coverage: - Authentication flows (register, login, logout, protected routes) - Task management (view, complete, filter, search) - Social feed (view posts, create post, like, view comments) - Events (view, join/RSVP, filter, view details) - User profile (view profile, streets, badges, statistics) - Premium features page - Leaderboard and rankings - Map view 🤖 Generated with OpenCode Co-Authored-By: AI Assistant <noreply@ai-assistant.com>
This commit is contained in:
@@ -8,34 +8,34 @@ const Navbar = () => {
|
||||
const authLinks = (
|
||||
<ul className="navbar-nav ml-auto">
|
||||
<li className="nav-item">
|
||||
<Link className="nav-link" to="/map">Map</Link>
|
||||
<Link className="nav-link" to="/map" data-testid="nav-map">Map</Link>
|
||||
</li>
|
||||
<li className="nav-item">
|
||||
<Link className="nav-link" to="/tasks">Tasks</Link>
|
||||
<Link className="nav-link" to="/tasks" data-testid="nav-tasks">Tasks</Link>
|
||||
</li>
|
||||
<li className="nav-item">
|
||||
<Link className="nav-link" to="/feed">Feed</Link>
|
||||
<Link className="nav-link" to="/feed" data-testid="nav-feed">Feed</Link>
|
||||
</li>
|
||||
<li className="nav-item">
|
||||
<Link className="nav-link" to="/events">Events</Link>
|
||||
<Link className="nav-link" to="/events" data-testid="nav-events">Events</Link>
|
||||
</li>
|
||||
<li className="nav-item">
|
||||
<Link className="nav-link" to="/rewards">Rewards</Link>
|
||||
<Link className="nav-link" to="/rewards" data-testid="nav-rewards">Rewards</Link>
|
||||
</li>
|
||||
<li className="nav-item">
|
||||
<Link className="nav-link" to="/leaderboard">Leaderboard</Link>
|
||||
<Link className="nav-link" to="/leaderboard" data-testid="nav-leaderboard">Leaderboard</Link>
|
||||
</li>
|
||||
<li className="nav-item">
|
||||
<Link className="nav-link" to="/analytics">Analytics</Link>
|
||||
<Link className="nav-link" to="/analytics" data-testid="nav-analytics">Analytics</Link>
|
||||
</li>
|
||||
<li className="nav-item">
|
||||
<Link className="nav-link" to="/profile">Profile</Link>
|
||||
<Link className="nav-link" to="/profile" data-testid="nav-profile">Profile</Link>
|
||||
</li>
|
||||
<li className="nav-item">
|
||||
<Link className="nav-link" to="/premium">Premium</Link>
|
||||
<Link className="nav-link" to="/premium" data-testid="nav-premium">Premium</Link>
|
||||
</li>
|
||||
<li className="nav-item">
|
||||
<a onClick={logout} href="#!" className="nav-link">Logout</a>
|
||||
<a onClick={logout} href="#!" className="nav-link" data-testid="logout-button">Logout</a>
|
||||
</li>
|
||||
</ul>
|
||||
);
|
||||
@@ -43,18 +43,18 @@ const Navbar = () => {
|
||||
const guestLinks = (
|
||||
<ul className="navbar-nav ml-auto">
|
||||
<li className="nav-item">
|
||||
<Link className="nav-link" to="/register">Register</Link>
|
||||
<Link className="nav-link" to="/register" data-testid="nav-register">Register</Link>
|
||||
</li>
|
||||
<li className="nav-item">
|
||||
<Link className="nav-link" to="/login">Login</Link>
|
||||
<Link className="nav-link" to="/login" data-testid="nav-login">Login</Link>
|
||||
</li>
|
||||
</ul>
|
||||
);
|
||||
|
||||
return (
|
||||
<nav className="navbar navbar-expand-sm navbar-dark bg-dark mb-4">
|
||||
<nav className="navbar navbar-expand-sm navbar-dark bg-dark mb-4" data-testid="navbar">
|
||||
<div className="container">
|
||||
<Link className="navbar-brand" to="/">Adopt-a-Street</Link>
|
||||
<Link className="navbar-brand" to="/" data-testid="navbar-brand">Adopt-a-Street</Link>
|
||||
<div className="collapse navbar-collapse">
|
||||
{auth.isAuthenticated ? authLinks : guestLinks}
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user