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>
317 lines
10 KiB
JSON
317 lines
10 KiB
JSON
{
|
|
"name": "adopt-a-street",
|
|
"lockfileVersion": 3,
|
|
"requires": true,
|
|
"packages": {
|
|
"": {
|
|
"dependencies": {
|
|
"mongoose": "^8.19.2",
|
|
"nodemailer": "^7.0.10"
|
|
},
|
|
"devDependencies": {
|
|
"@playwright/test": "^1.57.0"
|
|
}
|
|
},
|
|
"node_modules/@mongodb-js/saslprep": {
|
|
"version": "1.3.2",
|
|
"resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.3.2.tgz",
|
|
"integrity": "sha512-QgA5AySqB27cGTXBFmnpifAi7HxoGUeezwo6p9dI03MuDB6Pp33zgclqVb6oVK3j6I9Vesg0+oojW2XxB59SGg==",
|
|
"license": "MIT",
|
|
"dependencies": {
|
|
"sparse-bitfield": "^3.0.3"
|
|
}
|
|
},
|
|
"node_modules/@playwright/test": {
|
|
"version": "1.57.0",
|
|
"resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.57.0.tgz",
|
|
"integrity": "sha512-6TyEnHgd6SArQO8UO2OMTxshln3QMWBtPGrOCgs3wVEmQmwyuNtB10IZMfmYDE0riwNR1cu4q+pPcxMVtaG3TA==",
|
|
"dev": true,
|
|
"license": "Apache-2.0",
|
|
"dependencies": {
|
|
"playwright": "1.57.0"
|
|
},
|
|
"bin": {
|
|
"playwright": "cli.js"
|
|
},
|
|
"engines": {
|
|
"node": ">=18"
|
|
}
|
|
},
|
|
"node_modules/@types/webidl-conversions": {
|
|
"version": "7.0.3",
|
|
"resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz",
|
|
"integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==",
|
|
"license": "MIT"
|
|
},
|
|
"node_modules/@types/whatwg-url": {
|
|
"version": "11.0.5",
|
|
"resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.5.tgz",
|
|
"integrity": "sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ==",
|
|
"license": "MIT",
|
|
"dependencies": {
|
|
"@types/webidl-conversions": "*"
|
|
}
|
|
},
|
|
"node_modules/bson": {
|
|
"version": "6.10.4",
|
|
"resolved": "https://registry.npmjs.org/bson/-/bson-6.10.4.tgz",
|
|
"integrity": "sha512-WIsKqkSC0ABoBJuT1LEX+2HEvNmNKKgnTAyd0fL8qzK4SH2i9NXg+t08YtdZp/V9IZ33cxe3iV4yM0qg8lMQng==",
|
|
"license": "Apache-2.0",
|
|
"engines": {
|
|
"node": ">=16.20.1"
|
|
}
|
|
},
|
|
"node_modules/debug": {
|
|
"version": "4.4.3",
|
|
"resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
|
|
"integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
|
|
"license": "MIT",
|
|
"dependencies": {
|
|
"ms": "^2.1.3"
|
|
},
|
|
"engines": {
|
|
"node": ">=6.0"
|
|
},
|
|
"peerDependenciesMeta": {
|
|
"supports-color": {
|
|
"optional": true
|
|
}
|
|
}
|
|
},
|
|
"node_modules/fsevents": {
|
|
"version": "2.3.2",
|
|
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
|
|
"integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
|
|
"dev": true,
|
|
"hasInstallScript": true,
|
|
"license": "MIT",
|
|
"optional": true,
|
|
"os": [
|
|
"darwin"
|
|
],
|
|
"engines": {
|
|
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
|
|
}
|
|
},
|
|
"node_modules/kareem": {
|
|
"version": "2.6.3",
|
|
"resolved": "https://registry.npmjs.org/kareem/-/kareem-2.6.3.tgz",
|
|
"integrity": "sha512-C3iHfuGUXK2u8/ipq9LfjFfXFxAZMQJJq7vLS45r3D9Y2xQ/m4S8zaR4zMLFWh9AsNPXmcFfUDhTEO8UIC/V6Q==",
|
|
"license": "Apache-2.0",
|
|
"engines": {
|
|
"node": ">=12.0.0"
|
|
}
|
|
},
|
|
"node_modules/memory-pager": {
|
|
"version": "1.5.0",
|
|
"resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
|
|
"integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==",
|
|
"license": "MIT"
|
|
},
|
|
"node_modules/mongodb": {
|
|
"version": "6.20.0",
|
|
"resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.20.0.tgz",
|
|
"integrity": "sha512-Tl6MEIU3K4Rq3TSHd+sZQqRBoGlFsOgNrH5ltAcFBV62Re3Fd+FcaVf8uSEQFOJ51SDowDVttBTONMfoYWrWlQ==",
|
|
"license": "Apache-2.0",
|
|
"dependencies": {
|
|
"@mongodb-js/saslprep": "^1.3.0",
|
|
"bson": "^6.10.4",
|
|
"mongodb-connection-string-url": "^3.0.2"
|
|
},
|
|
"engines": {
|
|
"node": ">=16.20.1"
|
|
},
|
|
"peerDependencies": {
|
|
"@aws-sdk/credential-providers": "^3.188.0",
|
|
"@mongodb-js/zstd": "^1.1.0 || ^2.0.0",
|
|
"gcp-metadata": "^5.2.0",
|
|
"kerberos": "^2.0.1",
|
|
"mongodb-client-encryption": ">=6.0.0 <7",
|
|
"snappy": "^7.3.2",
|
|
"socks": "^2.7.1"
|
|
},
|
|
"peerDependenciesMeta": {
|
|
"@aws-sdk/credential-providers": {
|
|
"optional": true
|
|
},
|
|
"@mongodb-js/zstd": {
|
|
"optional": true
|
|
},
|
|
"gcp-metadata": {
|
|
"optional": true
|
|
},
|
|
"kerberos": {
|
|
"optional": true
|
|
},
|
|
"mongodb-client-encryption": {
|
|
"optional": true
|
|
},
|
|
"snappy": {
|
|
"optional": true
|
|
},
|
|
"socks": {
|
|
"optional": true
|
|
}
|
|
}
|
|
},
|
|
"node_modules/mongodb-connection-string-url": {
|
|
"version": "3.0.2",
|
|
"resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.2.tgz",
|
|
"integrity": "sha512-rMO7CGo/9BFwyZABcKAWL8UJwH/Kc2x0g72uhDWzG48URRax5TCIcJ7Rc3RZqffZzO/Gwff/jyKwCU9TN8gehA==",
|
|
"license": "Apache-2.0",
|
|
"dependencies": {
|
|
"@types/whatwg-url": "^11.0.2",
|
|
"whatwg-url": "^14.1.0 || ^13.0.0"
|
|
}
|
|
},
|
|
"node_modules/mongoose": {
|
|
"version": "8.19.2",
|
|
"resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.19.2.tgz",
|
|
"integrity": "sha512-ww2T4dBV+suCbOfG5YPwj9pLCfUVyj8FEA1D3Ux1HHqutpLxGyOYEPU06iPRBW4cKr3PJfOSYsIpHWPTkz5zig==",
|
|
"license": "MIT",
|
|
"dependencies": {
|
|
"bson": "^6.10.4",
|
|
"kareem": "2.6.3",
|
|
"mongodb": "~6.20.0",
|
|
"mpath": "0.9.0",
|
|
"mquery": "5.0.0",
|
|
"ms": "2.1.3",
|
|
"sift": "17.1.3"
|
|
},
|
|
"engines": {
|
|
"node": ">=16.20.1"
|
|
},
|
|
"funding": {
|
|
"type": "opencollective",
|
|
"url": "https://opencollective.com/mongoose"
|
|
}
|
|
},
|
|
"node_modules/mpath": {
|
|
"version": "0.9.0",
|
|
"resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz",
|
|
"integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==",
|
|
"license": "MIT",
|
|
"engines": {
|
|
"node": ">=4.0.0"
|
|
}
|
|
},
|
|
"node_modules/mquery": {
|
|
"version": "5.0.0",
|
|
"resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz",
|
|
"integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==",
|
|
"license": "MIT",
|
|
"dependencies": {
|
|
"debug": "4.x"
|
|
},
|
|
"engines": {
|
|
"node": ">=14.0.0"
|
|
}
|
|
},
|
|
"node_modules/ms": {
|
|
"version": "2.1.3",
|
|
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
|
|
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
|
|
"license": "MIT"
|
|
},
|
|
"node_modules/nodemailer": {
|
|
"version": "7.0.10",
|
|
"resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-7.0.10.tgz",
|
|
"integrity": "sha512-Us/Se1WtT0ylXgNFfyFSx4LElllVLJXQjWi2Xz17xWw7amDKO2MLtFnVp1WACy7GkVGs+oBlRopVNUzlrGSw1w==",
|
|
"license": "MIT-0",
|
|
"engines": {
|
|
"node": ">=6.0.0"
|
|
}
|
|
},
|
|
"node_modules/playwright": {
|
|
"version": "1.57.0",
|
|
"resolved": "https://registry.npmjs.org/playwright/-/playwright-1.57.0.tgz",
|
|
"integrity": "sha512-ilYQj1s8sr2ppEJ2YVadYBN0Mb3mdo9J0wQ+UuDhzYqURwSoW4n1Xs5vs7ORwgDGmyEh33tRMeS8KhdkMoLXQw==",
|
|
"dev": true,
|
|
"license": "Apache-2.0",
|
|
"dependencies": {
|
|
"playwright-core": "1.57.0"
|
|
},
|
|
"bin": {
|
|
"playwright": "cli.js"
|
|
},
|
|
"engines": {
|
|
"node": ">=18"
|
|
},
|
|
"optionalDependencies": {
|
|
"fsevents": "2.3.2"
|
|
}
|
|
},
|
|
"node_modules/playwright-core": {
|
|
"version": "1.57.0",
|
|
"resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.57.0.tgz",
|
|
"integrity": "sha512-agTcKlMw/mjBWOnD6kFZttAAGHgi/Nw0CZ2o6JqWSbMlI219lAFLZZCyqByTsvVAJq5XA5H8cA6PrvBRpBWEuQ==",
|
|
"dev": true,
|
|
"license": "Apache-2.0",
|
|
"bin": {
|
|
"playwright-core": "cli.js"
|
|
},
|
|
"engines": {
|
|
"node": ">=18"
|
|
}
|
|
},
|
|
"node_modules/punycode": {
|
|
"version": "2.3.1",
|
|
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
|
|
"integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
|
|
"license": "MIT",
|
|
"engines": {
|
|
"node": ">=6"
|
|
}
|
|
},
|
|
"node_modules/sift": {
|
|
"version": "17.1.3",
|
|
"resolved": "https://registry.npmjs.org/sift/-/sift-17.1.3.tgz",
|
|
"integrity": "sha512-Rtlj66/b0ICeFzYTuNvX/EF1igRbbnGSvEyT79McoZa/DeGhMyC5pWKOEsZKnpkqtSeovd5FL/bjHWC3CIIvCQ==",
|
|
"license": "MIT"
|
|
},
|
|
"node_modules/sparse-bitfield": {
|
|
"version": "3.0.3",
|
|
"resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz",
|
|
"integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==",
|
|
"license": "MIT",
|
|
"dependencies": {
|
|
"memory-pager": "^1.0.2"
|
|
}
|
|
},
|
|
"node_modules/tr46": {
|
|
"version": "5.1.1",
|
|
"resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.1.tgz",
|
|
"integrity": "sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==",
|
|
"license": "MIT",
|
|
"dependencies": {
|
|
"punycode": "^2.3.1"
|
|
},
|
|
"engines": {
|
|
"node": ">=18"
|
|
}
|
|
},
|
|
"node_modules/webidl-conversions": {
|
|
"version": "7.0.0",
|
|
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
|
|
"integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
|
|
"license": "BSD-2-Clause",
|
|
"engines": {
|
|
"node": ">=12"
|
|
}
|
|
},
|
|
"node_modules/whatwg-url": {
|
|
"version": "14.2.0",
|
|
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz",
|
|
"integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==",
|
|
"license": "MIT",
|
|
"dependencies": {
|
|
"tr46": "^5.1.0",
|
|
"webidl-conversions": "^7.0.0"
|
|
},
|
|
"engines": {
|
|
"node": ">=18"
|
|
}
|
|
}
|
|
}
|
|
}
|