-
Notifications
You must be signed in to change notification settings - Fork 1
Lab 9 Report ‐ 30.04.2026
Feature: User Management & Preparedness Profile
Author: Rojhat Delibaş
Related Issues: #374
Description: Verifies the end-to-end flow of a new user joining the platform, from registration to completing a detailed preparedness profile.
Prerequisites:
- Deployment URL is accessible.
- Clean database state.
| # | Instruction | Expectation | Result | Note |
|---|---|---|---|---|
| 1 | Open the browser and navigate to the application URL. | Landing page loads successfully. | ||
| 2 | Click on the "Sign Up" button in the navigation bar. | Sign-up form is displayed. | ||
| 3 | Click the "Continue with Email" button. | Email registration fields appear. | ||
| 4 | Click on the "Email" input field. | Field is focused. | ||
| 5 | Type a valid email address (e.g., test-resident@example.com). |
Input reflects the typed text. | ||
| 6 | Click on the "Password" input field. | Field is focused. | ||
| 7 | Type a strong password (at least 8 characters, with numbers). | Input reflects the typed text (masked). | ||
| 8 | Click on the "Confirm Password" input field. | Field is focused. | ||
| 9 | Re-type the same password. | Validation indicator shows passwords match. | ||
| 10 | Click the checkbox for "I agree to the Terms of Service". | Checkbox is marked. | ||
| 11 | Click the "Create Account" button. | Loading state is shown. | ||
| 12 | Observe the redirection to the "Verify Email" page. | Page heading says "Verify Email". | ||
| 13 | Access the simulated email inbox for the user. | Verification email is present. | ||
| 14 | Copy the 6-digit verification code from the email. | Code is copied to clipboard. | ||
| 15 | Return to the app and click the first digit box. | Input is focused. | ||
| 16 | Paste or type the 6-digit code. | Code is entered across the boxes. | ||
| 17 | Click the "Verify" button. | Page redirects to "Complete Your Profile". | ||
| 18 | Click on the "Full Name" input field and type "John Resident". | Text is entered correctly. | ||
| 19 | Click on the "Phone Number" field and type "5550001122". | Format validation passes. | ||
| 20 | Click the "Age" dropdown and select "30". | Selection is displayed. | ||
| 21 | Select "Male" from the "Gender" options. | Radio button/Select is marked. | ||
| 22 | Select "A Rh+" from the "Blood Type" dropdown. | Selection is displayed. | ||
| 23 | Click the "Chronic Diseases" field and type "None". | Text is entered. | ||
| 24 | Select "Engineer" from the "Profession" dropdown. | Selection is displayed. | ||
| 25 | Check the "First Aid" checkbox under Expertise Areas. | Checkbox is marked. | ||
| 26 | Select "Turkey" from the "Country" dropdown. | City dropdown becomes enabled. | ||
| 27 | Select "Istanbul" from the "City" dropdown. | District dropdown becomes enabled. | ||
| 28 | Select "Besiktas" from the "District" dropdown. | Neighborhood dropdown becomes enabled. | ||
| 29 | Select "Levazim" from the "Neighborhood" dropdown. | Selection is displayed. | ||
| 30 | Click the "Save and Continue" button. | User is redirected to /profile with a success toast. |
Feature: Help Request Creation
Author: Mehmet Can Gürbüz
Related Issues: #375
Description: Verifies that a resident in distress can navigate the multi-step help request process and successfully alert the community.
Prerequisites:
- User is logged in and has a completed profile.
- Browser is on the Home page.
| # | Instruction | Expectation | Result | Note |
|---|---|---|---|---|
| 1 | On the Home page, locate the "Need Emergency Help?" card. | Card is visible and prominent. | ||
| 2 | Click the "Create Request" button. | Form loads at /help-requests/new. |
||
| 3 | Click the "Help Category" dropdown. | List of categories (Medical, Food, SAR, etc.) appears. | ||
| 4 | Select "Medical Assistance". | Medical-specific sub-fields are revealed. | ||
| 5 | Click the "Urgency Level" selector. | Levels (Low, Medium, High, Critical) are shown. | ||
| 6 | Select "High". | Selection is highlighted in red/orange. | ||
| 7 | Click on the "Description" text area. | Field is focused. | ||
| 8 | Type "I have a deep cut on my leg and cannot stop the bleeding." | Text is visible; character count updates. | ||
| 9 | Click the "Affected People" numeric input. | Input is focused. | ||
| 10 | Type "1" into the field. | Value is accepted. | ||
| 11 | Locate the "Risk Flags" section. | Multiple checkboxes are visible. | ||
| 12 | Check the "Severe Bleeding" checkbox. | Checkbox is marked. | ||
| 13 | Check the "Immobility" checkbox. | Checkbox is marked. | ||
| 14 | Click on the "Contact Phone" field. | Field is focused. | ||
| 15 | Verify it is pre-filled with the profile phone number. | Number "5550001122" is visible. | ||
| 16 | Click the "Alternative Contact" field. | Field is focused. | ||
| 17 | Type "5550009988". | Text is entered. | ||
| 18 | Scroll to the "Location" section of the form. | Map and address fields are visible. | ||
| 19 | Verify the address is pre-filled from the profile. | Correct neighborhood/city is shown. | ||
| 20 | Click the "Refine on Map" button. | Map expands or opens in a modal. | ||
| 21 | Drag the marker to the exact house location. | Coordinates are updated internally. | ||
| 22 | Click "Confirm Location". | Modal closes; refined address is shown. | ||
| 23 | Check the "I consent to sharing my location with helpers" box. | Checkbox is marked. | ||
| 24 | Check the "All information provided is accurate" box. | Checkbox is marked. | ||
| 25 | Click the "Submit Request" button. | A confirmation spinner appears. | ||
| 26 | Wait for the success animation. | "Request Submitted" checkmark is shown. | ||
| 27 | Click "Go to My Requests". | Redirection to request list occurs. | ||
| 28 | Verify the new request is at the top of the list. | Request is visible with "PENDING" status. |
Feature: Matching & Assignment
Author: Ethem Erinç Cengiz
Related Issues: #376
Description: Verifies that a qualified volunteer can signal availability and receive a relevant emergency assignment.
Prerequisites:
- A "Medical" help request exists within 500m of the helper's location.
- Helper user has "First Aid" expertise listed in their profile.
| # | Instruction | Expectation | Result | Note |
|---|---|---|---|---|
| 1 | Login as the Helper user. | Dashboard loads. | ||
| 2 | Click on the User Avatar in the top right. | Dropdown menu opens. | ||
| 3 | Click on "My Profile". | Profile page loads. | ||
| 4 | Locate the "Helper Status" card. | Card shows "Inactive" or "Unavailable". | ||
| 5 | Click the toggle switch to "Available". | Toggle turns green; status text changes to "Searching for requests...". | ||
| 6 | Navigate back to the Home page. | Home page loads. | ||
| 7 | Observe the "Active Duty" section. | Section shows "Looking for nearby requests...". | ||
| 8 | Wait for the matching algorithm to run (approx. 5-10 seconds). | Browser plays a notification sound/vibration. | ||
| 9 | Observe an "Emergency Assignment" card appearing. | Card shows "Medical Assistance Needed - 300m away". | ||
| 10 | Click the "View Details" button on the card. | Assignment detail page loads. | ||
| 11 | Review the requester's name and description. | Info matches the seeded help request. | ||
| 12 | Click the "View Location" button. | Map opens showing the route to the requester. | ||
| 13 | Click the "I am on my way" button. | Status updates to "RESPONDING"; requester is notified. | ||
| 14 | Click the "Open Chat" button. | Real-time chat window opens. | ||
| 15 | Type "I am a first-aider and will be there in 2 minutes." | Message is sent. | ||
| 16 | Click "Arrived at Scene" button. | Status updates to "ON-SITE". | ||
| 17 | Perform the necessary aid (offline/manual action). | N/A | ||
| 18 | Click the "Issue Resolved" button. | A resolution form appears. | ||
| 19 | Click the "Resolution Type" dropdown. | Options (Successful, Handed to Professional, etc.) appear. | ||
| 20 | Select "Successful". | Selection is marked. | ||
| 21 | Type a brief note: "Applied bandage, bleeding stopped." | Text is entered. | ||
| 22 | Click "Submit Resolution". | Assignment is closed; success message shown. | ||
| 23 | Verify status returns to "Available" for new assignments. | Status bar shows green "Available" text. |
Feature: Gathering Areas & Location Features
Author: Kağan Can
Related Issues: #377
Description: Verifies that a user can explore safe zones, shelters, and assembly points during or before an emergency.
Prerequisites:
- Browser Geolocation is enabled.
- User is logged in or browsing as Guest.
| # | Instruction | Expectation | Result | Note |
|---|---|---|---|---|
| 1 | From any page, click "Gathering Areas" in the main menu. | Page loads at /gathering-areas. |
||
| 2 | Observe the "Requesting Location" overlay. | Spinner is visible while browser resolves GPS. | ||
| 3 | Wait for the map to center on the current location. | Map shifts to the user's vicinity. | ||
| 4 | Observe the sidebar on the left/bottom. | A list of nearby areas is displayed. | ||
| 5 | Click the "Filter" button. | Filter options (Category, Open Status, Capacity) appear. | ||
| 6 | Select "Park" from the category filters. | List updates to show only parks. | ||
| 7 | Click "Apply Filters". | Filter menu closes; results are filtered. | ||
| 8 | Click on the first item in the list: "Abdi Ipekci Park". | Map zooms in on the park marker. | ||
| 9 | Click the "More Info" button on the popup. | Detail side-panel opens. | ||
| 10 | Verify the "Category" label says "Assembly Point". | Data is accurate. | ||
| 11 | Check the "Estimated Capacity" field. | Value (e.g., "500 people") is visible. | ||
| 12 | Locate the "Amenities" section. | Icons for water, power, and first-aid are visible. | ||
| 13 | Click the "Get Directions" button. | Google/Apple Maps opens in a new tab with the route. | ||
| 14 | Return to the NEPH app. | N/A | ||
| 15 | Click the "Search Area" button on the map. | App fetches areas for the current map viewport. | ||
| 16 | Zoom out on the map using the "-" button. | Viewport expands. | ||
| 17 | Click "Refresh Results". | New markers appear for the wider area. | ||
| 18 | Click on a "Shelter" icon (different color). | Popup shows shelter details. | ||
| 19 | Click the "Call Contact" button (if available). | Phone dialer opens with the shelter's number. | ||
| 20 | Close the detail panel. | Panel slides away; list is visible again. |
Feature: Admin Dashboard
Author: Berat Sayın
Related Issues: #378
Description: Verifies that a city coordinator can analyze community needs, monitor helper deployment, and view trends.
Prerequisites:
- Admin account with "COORDINATOR" permissions.
- Active and past help requests seeded in the database.
| # | Instruction | Expectation | Result | Note |
|---|---|---|---|---|
| 1 | Login with Admin credentials. | App redirects to /admin or dashboard view. |
||
| 2 | Click on the "Overview" tab in the admin sidebar. | Key metrics (Active, Responded, Resolved) are shown. | ||
| 3 | Click the "Region" dropdown at the top. | List of districts appears. | ||
| 4 | Select "Besiktas". | Metrics update to reflect only Besiktas data. | ||
| 5 | Hover over the "Help Types" pie chart. | Tooltip shows percentage of Medical vs. Food requests. | ||
| 6 | Click on the "Insights" tab. | Trend graphs (e.g., Requests per Hour) load. | ||
| 7 | Adjust the time range to "Last 24 Hours". | Graphs refresh with more granular data points. | ||
| 8 | Click on the "Active Requests" link in the summary. | Redirects to a filtered list of all open requests. | ||
| 9 | Click on a specific request ID (e.g., #REQ-101). |
Full request details and assignment history load. | ||
| 10 | Click the "View on Map" link for the request. | Map centers on the request location with responder locations. | ||
| 11 | Click the "Broadcast" button in the header. | A "Create Announcement" modal appears. | ||
| 12 | Type Title: "Water Distribution at Park". | Text is entered. | ||
| 13 | Type Message: "Clean water is available at central park until 8 PM." | Text is entered. | ||
| 14 | Select "Besiktas" as the target region. | Filter is applied. | ||
| 15 | Click "Send Broadcast". | Success message confirms notification sent. | ||
| 16 | Click on the "Monitoring" tab. | Helper availability map loads. | ||
| 17 | Observe blue dots representing available helpers. | Dots are visible on the map. | ||
| 18 | Click on a helper dot. | Tooltip shows helper name and skills. | ||
| 19 | Click the "Export Report" button. | A CSV file download starts. | ||
| 20 | Open the downloaded CSV file. | File contains the correct columns and data rows. |
Feature: System Security
Author: Alper Kartkaya
Related Issues: #379
Description: Verifies that the platform strictly enforces role-based access to protect sensitive user and emergency data.
Prerequisites:
- One unauthenticated session (Guest).
- One "Resident" user account.
- One "Admin" user account.
| # | Instruction | Expectation | Result | Note |
|---|---|---|---|---|
| 1 | Open a new Incognito/Private window. | Browser starts with no session data. | ||
| 2 | Type the URL /admin into the address bar and press Enter. |
Page redirects to /login?returnTo=/admin. |
||
| 3 | Verify that an "Unauthorized Access" message is NOT visible yet. | User is simply prompted to log in. | ||
| 4 | Log in using a standard "Resident" account. | Login succeeds; user is redirected to /home. |
||
| 5 | Verify that the "Admin" link is NOT visible in the navigation. | Nav bar only shows Home, Profile, etc. | ||
| 6 | Manually type /admin into the address bar and press Enter. |
Page redirects to /home with an "Access Denied" toast. |
||
| 7 | Attempt to access /api/admin/metrics via a direct GET request. |
Server returns 403 Forbidden JSON response. |
||
| 8 | Navigate to the "Gathering Areas" page. | Page loads (this is a public/resident feature). | ||
| 9 | Attempt to click a "Delete Area" button (if visible). | Button is absent for Residents. | ||
| 10 | Log out of the "Resident" account. | Session is cleared; redirected to Landing page. | ||
| 11 | Log in using an "Admin" account. | Dashboard loads at /admin. |
||
| 12 | Verify the "Admin" link IS visible in the navigation. | Nav bar shows the additional Admin option. | ||
| 13 | Click on the "User Management" section. | List of users is displayed. | ||
| 14 | Log out of the Admin account. | Session is cleared. | ||
| 15 | Navigate to /profile. |
Redirected to /login (Profile is protected). |
||
| 16 | Click the browser's "Back" button after logout. | Page shows "Session Expired" or redirects to Login. | ||
| 17 | Attempt to access a specific help request detail by ID: /help-requests/999. |
Redirected to Login. | ||
| 18 | Log in as Resident. | Redirected to /home. |
||
| 19 | Attempt to access a different user's private profile via ID. | Server returns 403 Forbidden or redirects to self-profile. |
||
| 20 | Verify that session tokens are cleared from LocalStorage on Logout. | Developer tools show no neph_access_token remaining. |
Kağan Can
- Conducted the requirements review by analyzing the current state of the system and identifying completed and missing requirements
- Evaluated how the system aligns with initial project goals and defined priorities for final delivery
- Created and contributed an example acceptance test for discovering gathering areas using geolocation #377
Alper Kartkaya
- Contributed to defining the acceptance testing strategy
- Helped structure acceptance tests and determine evaluation criteria from a user perspective
- Created and contributed an example acceptance test for authorization and access control #379
Berat Sayın
- Worked on the acceptance testing strategy alongside Alper
- Defined test scenarios and ensured alignment with stakeholder expectations
- Created and contributed an example acceptance test for admin dashboard monitoring #378
Mehmet Can Gürbüz
- Contributed to defining the data strategy for the system
- Focused on generating and structuring test data for realistic testing scenarios
- Created and contributed an example acceptance test for emergency help request submission #375
Ethem Erinç Cengiz
- Worked on the data strategy alongside Mehmet Can
- Helped define validation approaches to ensure test data reflects real-world usage
- Created and contributed an example acceptance test for helper availability and matching #376
Rojhat Delibaş
- Compiled and finalized the report by integrating all sections
- Ensured consistency and clarity across the document
- Created and contributed an example acceptance test for user registration and profile setup #374
🎓 Team Members
- Weekly Meeting 1 (16.02.2026)
- Weekly Meeting 2 (25.02.2026)
- Weekly Meeting 3 (04.03.2026)
- Weekly Meeting 4 (11.03.2026)
- Weekly Meeting 5 (18.03.2026)
- Weekly Meeting 6 (25.03.2026)
- Weekly Meeting 7 (01.04.2026)
- Weekly Meeting 8 (08.04.2026)
- Weekly Meeting 9 (15.04.2026)
- Weekly Meeting 10 (29.04.2026)
- Weekly Meeting 11 (06.05.2026)
- Weekly Meeting 12 (13.05.2026)
- Lab 1 Report (12/02/2026)
- Lab 2 Report (19/02/2026)
- Lab 3 Report (26/02/2026)
- Lab 4 Report (05/03/2026)
- Lab 5 Report (12/03/2026)
- Lab 6 Report (26/03/2026)
- Lab 7 Report (02/04/2026)
- Lab 8 Report (16/04/2026)
- Lab 9 Report (30/04/2026)
- Lab 10 Report (07/05/2026)
- Scenario 1: Injured Neighbor
- Scenario 2: Volunteer Users Help Offer
- Scenario 3: User Registration and Profile Setup
- Use Case Diagram (Final)
- Use Case Diagram for Scenerio 1 ‐ Sub‐group 2
- Use Case Diagram for Scenerio 2 ‐ Sub‐group 3
- Use Case Diagram for Scenerio 3 ‐ Sub‐group 1
- Sequence Diagram - Alper Kartkaya
- Sequence Diagram - Kağan Can
- Sequence Diagram - Mehmet Can Gürbüz
- Sequence Diagram - Ethem Erinç Cengiz
- Sequence Diagram - Berat Sayın
- Sequence Diagram - Gülce Tahtasız
- Sequence Diagram - Rojhat Delibaş