Skip to content

Joannaj00/CS4218_VirtualVault

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

150 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Virtual Vault 🛍️

Full-stack MERN e-commerce platform focused on reliability and automated testing.
Developed as part of a Software Quality Engineering course using Agile sprints and continuous integration workflows.

Overview

Virtual Vault is a full-stack e-commerce web application built with the MERN stack (MongoDB, Express, React, Node.js).
The project’s main objective was to implement a scalable system and ensure end-to-end reliability through unit, integration, UI, and performance testing.

The team followed Agile methodology, completing three sprints with defined backlogs, milestone reviews, and issue tracking on GitHub Projects.

📄 My Project Report

Tech Stack

Frontend: React, Context API, React Router
Backend: Node.js, Express.js, MongoDB
Testing: Jest (unit/integration), Playwright (UI), JMeter (performance), SonarQube (coverage)
CI/CD & Workflow: GitHub Actions, npm scripts, Agile sprint tracking via GitHub Projects

Features

  • User authentication and authorization (JWT)
  • Product management (CRUD operations)
  • Shopping cart and checkout with Braintree payment gateway
  • Responsive UI with dynamic routing
  • Robust automated testing pipeline for quality assurance
  • Performance evaluation under increasing concurrency levels

Tools and Frameworks

Frontend: React, Context API
Backend: Node.js, Express, MongoDB
Testing: Jest (unit/integration), Playwright (UI), JMeter (performance), SonarQube (coverage)
Workflow: GitHub Actions, npm scripts

👩🏻‍💻 Joanna Jung – Contributions

Unit Testing (Jest)

I implemented unit tests using Jest:

  • Auth & Access Control: context/auth.js, helpers/authHelper.js, middlewares/authMiddleware.js
  • Product Management: controllers/productController.js (create, delete, update)
  • Payment Integration (Braintree): braintreeTokenController, brainTreePaymentController
  • Database Configuration: config/db.js
  • Cart & Pages: context/cart.js, pages/CartPage.js, pages/Contact.js, pages/Policy.js

Testing validated data flow, database connections, and controller logic under multiple conditions.

Integration (Jest) and UI Testing (Playwright)

I developed integration tests with Jest and UI tests with Playwright to verify that frontend and backend modules worked cohesively:

  • UI Tests: Products.js, About.js, Search.js
  • Integration Tests: Contact.js, Policy.js, db.js, productController.js

These tests confirmed routing integrity, API response accuracy, and consistent frontend behavior.

Performance Testing (JMeter)

I performed capacity testing to analyze backend scalability and concurrency limits.

  • Single Endpoint: /api/v1/product/product-list/1
  • Multiple Endpoints: /product-list, /get-category, /product-count

Results Summary:

  • Stable performance up to ~40 threads; latency rose significantly beyond that.
  • Throughput peaked near 100 threads, marking the system’s concurrency ceiling.
  • 90th percentile latency exceeded 1800 ms past 100 threads, signaling noticeable user delays.
  • Multi-endpoint testing showed ~3–4× higher latency due to database contention.

Agile Workflow

  • Followed three Agile sprints with backlog refinement and sprint reviews.
  • Used GitHub Projects for task tracking and issue management.
  • Held team standups to coordinate development, testing, and code reviews.
  • Integrated CI checks to ensure tests passed before each merge.

How to Run Locally

# Clone the repository
git clone https://github.com/joannaj00/virtual-vault.git
cd virtual-vault

# Install dependencies
npm install

# Run frontend & backend concurrently
npm run dev

# Run Jest unit and integration tests
npm test

# Run Playwright UI tests
npx playwright test

# Run JMeter performance tests
# The JMeter test plan (CapacityTest.jmx) used for this project is not uploaded due to local file dependencies.

About

MERN e-commerce website built with full automation testing coverage using Jest, Playwright, and JMeter

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • JavaScript 65.3%
  • HTML 31.2%
  • CSS 3.2%
  • SCSS 0.3%