From 51a2b14c59f6a4807c779a2397fee5f0a61678ac Mon Sep 17 00:00:00 2001 From: justjeevs <58017609+justjeevs@users.noreply.github.com> Date: Tue, 20 May 2025 19:30:59 -0400 Subject: [PATCH 1/2] added onSubmit event handler for login --- src/components/LoginForm.js | 91 +++++++++++++++++++------------------ 1 file changed, 48 insertions(+), 43 deletions(-) diff --git a/src/components/LoginForm.js b/src/components/LoginForm.js index 26c8cc3..acc5758 100644 --- a/src/components/LoginForm.js +++ b/src/components/LoginForm.js @@ -2,51 +2,56 @@ import React, { useState } from 'react'; import './LoginForm.css'; function LoginForm({ onLogin }) { - const [formData, setFormData] = useState({ - name: '', - password: '' - }); + const [formData, setFormData] = useState({ + name: '', + password: '', + }); - const handleChange = (e) => { - const { name, value } = e.target; - setFormData(prevState => ({ - ...prevState, - [name]: value - })); - }; + const handleChange = (e) => { + const { name, value } = e.target; + setFormData((prevState) => ({ + ...prevState, + [name]: value, + })); + }; - return ( -
-
-

Login

-
- - -
-
- - + const handleSubmit = (e) => { + e.preventDefault(); + onLogin(formData); + }; + + return ( +
+ +

Login

+
+ + +
+
+ + +
+ +
- - -
- ); + ); } -export default LoginForm; \ No newline at end of file +export default LoginForm; From 8b42887d4a3d1f08826c5159d493ebacb3c26ce3 Mon Sep 17 00:00:00 2001 From: justjeevs <58017609+justjeevs@users.noreply.github.com> Date: Tue, 20 May 2025 19:31:15 -0400 Subject: [PATCH 2/2] added two tests for login --- cypress/e2e/login.cy.js | 38 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/cypress/e2e/login.cy.js b/cypress/e2e/login.cy.js index c2fbb3a..ceb3ffb 100644 --- a/cypress/e2e/login.cy.js +++ b/cypress/e2e/login.cy.js @@ -1,2 +1,36 @@ -describe('Login Component', () => { -}) \ No newline at end of file +describe('Login Functionality', () => { + beforeEach(() => { + cy.visit('/'); + }); + + it('should validate login form inputs and submission', () => { + // Test form validation + cy.get('button[type="submit"]').click(); + cy.get('input[name="name"]').should('have.attr', 'required'); + cy.get('input[name="password"]').should('have.attr', 'required'); + + // Test form inputs + cy.get('input[name="name"]').type('testuser'); + cy.get('input[name="password"]').type('password123'); + + // Verify input values + cy.get('input[name="name"]').should('have.value', 'testuser'); + cy.get('input[name="password"]').should('have.value', 'password123'); + }); + + it('should successfully login and redirect to welcome page', () => { + // Fill in login form + cy.get('input[name="name"]').type('testuser'); + cy.get('input[name="password"]').type('password123'); + + // Submit form + cy.get('button[type="submit"]').click(); + + // Verify redirect to welcome page + cy.get('.welcome-card').should('be.visible'); + cy.get('.welcome-card h1').should('contain', 'Welcome, testuser!'); + + // Verify logout button is present + cy.get('.logout-button').should('be.visible'); + }); +});