Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
109 changes: 3 additions & 106 deletions cypress.config.ts
Original file line number Diff line number Diff line change
@@ -1,114 +1,11 @@
import path from "path";
import _ from "lodash";
import axios from "axios";
import dotenv from "dotenv";
import Promise from "bluebird";
import codeCoverageTask from "@cypress/code-coverage/task";
import { defineConfig } from "cypress";
import viteConfig from "./vite.cypress.config.ts";

dotenv.config({ path: ".env.local" });
dotenv.config();

let awsConfig = {
default: undefined,
};

try {
awsConfig = require(path.join(__dirname, "./aws-exports-es5.js"));
} catch (e) {}

export default defineConfig({
projectId: "7s5okt",
retries: {
runMode: 2,
},
env: {
apiUrl: "http://localhost:3001",
mobileViewportWidthBreakpoint: 414,
coverage: false,
codeCoverage: {
url: "http://localhost:3001/__coverage__",
exclude: "cypress/**/*.*",
},
defaultPassword: process.env.SEED_DEFAULT_USER_PASSWORD,
paginationPageSize: process.env.PAGINATION_PAGE_SIZE,

// Auth0
auth0_username: process.env.AUTH0_USERNAME,
auth0_password: process.env.AUTH0_PASSWORD,
auth0_domain: process.env.VITE_AUTH0_DOMAIN,

// Okta
okta_username: process.env.OKTA_USERNAME,
okta_password: process.env.OKTA_PASSWORD,
okta_domain: process.env.VITE_OKTA_DOMAIN,
okta_client_id: process.env.VITE_OKTA_CLIENTID,
okta_programmatic_login: process.env.OKTA_PROGRAMMATIC_LOGIN || false,

// Amazon Cognito
cognito_username: process.env.AWS_COGNITO_USERNAME,
cognito_password: process.env.AWS_COGNITO_PASSWORD,
cognito_domain: process.env.AWS_COGNITO_DOMAIN,
cognito_programmatic_login: false,
awsConfig: awsConfig.default,

// Google
googleRefreshToken: process.env.GOOGLE_REFRESH_TOKEN,
googleClientId: process.env.VITE_GOOGLE_CLIENTID,
googleClientSecret: process.env.VITE_GOOGLE_CLIENT_SECRET,
},
component: {
devServer: {
framework: "react",
bundler: "vite",
viteConfig,
},
specPattern: "src/**/*.cy.{js,jsx,ts,tsx}",
supportFile: "cypress/support/component.ts",
setupNodeEvents(on, config) {
codeCoverageTask(on, config);
return config;
},
},
e2e: {
baseUrl: "http://localhost:3000",
specPattern: "cypress/tests/**/*.spec.{js,jsx,ts,tsx}",
supportFile: "cypress/support/e2e.ts",
viewportHeight: 1000,
viewportWidth: 1280,
experimentalRunAllSpecs: true,
experimentalStudio: true,
setupNodeEvents(on, config) {
const testDataApiEndpoint = `${config.env.apiUrl}/testData`;

const queryDatabase = ({ entity, query }, callback) => {
const fetchData = async (attrs) => {
const { data } = await axios.get(`${testDataApiEndpoint}/${entity}`);
return callback(data, attrs);
};

return Array.isArray(query) ? Promise.map(query, fetchData) : fetchData(query);
};

on("task", {
async "db:seed"() {
// seed database with test data
const { data } = await axios.post(`${testDataApiEndpoint}/seed`);
return data;
},

// fetch test data from a database (MySQL, PostgreSQL, etc...)
"filter:database"(queryPayload) {
return queryDatabase(queryPayload, (data, attrs) => _.filter(data.results, attrs));
},
"find:database"(queryPayload) {
return queryDatabase(queryPayload, (data, attrs) => _.find(data.results, attrs));
},
});

codeCoverageTask(on, config);
return config;
// implement node event listeners here
},

baseUrl:'http://localhost:3000/signin',
},
});
29 changes: 29 additions & 0 deletions cypress/e2e/signin.cy.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import { sign } from 'crypto';
import userData from '../fixtures/user/userData.json'
import SignInPage from '../pages/signInPage';

const signinPage = new SignInPage()

describe('Login Screen', () => {
it('Login with Success', () => {
signinPage.accessLoginPage()

// Sign in with unselect remember me box and logout to check if don't have data saved in the field
signinPage.loginSucces(userData.successSignUp.username, userData.successSignUp.password)

//Sign in with select remember me box and logout to check if has some data saved in the field
signinPage.loginSuccesBox(userData.successSignUp.username, userData.successSignUp.password)

});

it('Login with Fail', () => {
signinPage.accessLoginPage()

signinPage.signinIncUser('Guido', '5123')
signinPage.signinIncPass('admin', '12456')
signinPage.signinEmptyPass(userData.successSignUp.username)
signinPage.signinEmptyUser(userData.successSignUp.password)
signinPage.signinEmpty()

});
});
44 changes: 44 additions & 0 deletions cypress/e2e/signup.cy.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import NewAccPage from '../pages/signUpPage'
import userData from '../fixtures/user/userData.json'

const newAccLogin = new NewAccPage()


describe('Creating Login', () => {
it('Sign up with sucess', () => {
newAccLogin.accessLoginPage()
//Test Case - Normal creating account - 1
newAccLogin.createAcc(userData.successSignUp.firstName, userData.successSignUp.lastName, userData.successSignUp.username, userData.successSignUp.password, userData.successSignUp.confirmPassword)
newAccLogin.successCreate()

//Test Case - Password bigger than 4 caractheres - 2
newAccLogin.createAcc(userData.successSignUp.firstName, userData.successSignUp.lastName, userData.successSignUp.username, userData.successSignUp.passwordB, userData.successSignUp.confirmPasswordB)
newAccLogin.successCreate()
})


it('Sing up with failed', () => {
//Test Case - Empty First Name 3
newAccLogin.createEmptyName(userData.successSignUp.lastName, userData.successSignUp.username, userData.successSignUp.password, userData.successSignUp.confirmPassword)

// Test Case - Empty Last Name 4
newAccLogin.createEmptyLastName(userData.successSignUp.firstName, userData.successSignUp.username, userData.successSignUp.password, userData.successSignUp.confirmPassword)

// Test Case - Empty User Name 5
newAccLogin.createEmptyUserName(userData.successSignUp.firstName, userData.successSignUp.lastName, userData.successSignUp.password, userData.successSignUp.confirmPassword)

// Test Case - Empty Confirm Password 6
newAccLogin.createEmptyPassword(userData.successSignUp.firstName, userData.successSignUp.lastName, userData.successSignUp.username, userData.successSignUp.confirmPassword)

// Test Case - Empty Password 7
newAccLogin.createEmptyConfirmPassword(userData.successSignUp.firstName, userData.successSignUp.lastName, userData.successSignUp.username, userData.successSignUp.password)

//Test Case - Empty all fields 8
newAccLogin.createEmptyAll()

//Test Case - Different Password 9
newAccLogin.createDiffPass(userData.successSignUp.firstName, userData.successSignUp.lastName, userData.successSignUp.username, userData.successSignUp.password, userData.successSignUp.differentPassword)

});

})
5 changes: 5 additions & 0 deletions cypress/fixtures/example.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"name": "Using fixtures to represent data",
"email": "[email protected]",
"body": "Fixtures are a great way to mock data for responses to routes"
}
12 changes: 12 additions & 0 deletions cypress/fixtures/user/userData.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"successSignUp": {
"firstName": "Admin",
"lastName": "admin123",
"username": "admin",
"password": "1234",
"passwordB": "1234abc",
"confirmPassword": "1234",
"confirmPasswordB": "1234abc",
"differentPassword": "4321"
}
}
84 changes: 84 additions & 0 deletions cypress/pages/signInPage.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
class SignInPage {
selectorsList() {
const selectors = {
usernameField: '[name="username"]',
passwordField: '[name="password"]',
signinButton: ".SignInForm-submit",

}
return selectors
}

accessLoginPage() {
cy.visit('http://localhost:3000/signin')
}

loginSucces(username, password) {
cy.get(this.selectorsList().usernameField).type(username)
cy.get(this.selectorsList().passwordField).type(password)
cy.get(this.selectorsList().signinButton).click()
cy.get('[data-test="sidenav-home"]').contains('Home')

cy.get('[data-test="sidenav-signout"]').click()
cy.location('pathname').should('equal', '/signin')
cy.get(this.selectorsList().usernameField).should('have.value', '')
cy.get(this.selectorsList().passwordField).should('have.value', '')
}


loginSuccesBox(username, password) {
cy.get(this.selectorsList().usernameField).type(username)
cy.get(this.selectorsList().passwordField).type(password)
cy.get('[name="remember"]').click()
cy.get(this.selectorsList().signinButton).click()
cy.get('[data-test="sidenav-home"]').contains('Home')

cy.get('[data-test="sidenav-signout"]').click()
cy.location('pathname').should('equal', '/signin')
cy.get(this.selectorsList().usernameField).should('admin')
cy.get(this.selectorsList().passwordField).should('1234')


}

signinIncUser(username, password){
cy.get(this.selectorsList().usernameField).type(username)
cy.get(this.selectorsList().passwordField).type(password)
cy.get(this.selectorsList().signinButton).click()
cy.get('[data-test="signin-error"]').should('exist')
}
signinIncPass(username, password){
cy.get(this.selectorsList().usernameField).type(username)
cy.get(this.selectorsList().passwordField).type(password)
cy.get(this.selectorsList().signinButton).click()
cy.get('[data-test="signin-error"]').should('exist')
}

signinEmptyPass(username){
cy.get(this.selectorsList().usernameField).type(username)
cy.get(this.selectorsList().passwordField).click()

cy.get(this.selectorsList().signinButton).should('be.disabled')
cy.get(this.selectorsList().usernameField).clear()

}

signinEmptyUser(password){
cy.get(this.selectorsList().usernameField).click()
cy.get(this.selectorsList().passwordField).type(password)
cy.get(this.selectorsList().signinButton).should('be.disabled')

cy.get('#username-helper-text').should('exist')
cy.get(this.selectorsList().passwordField).clear()

}

signinEmpty(){
cy.get(this.selectorsList().usernameField).click()
cy.get(this.selectorsList().passwordField).click()
cy.get(this.selectorsList().signinButton).should('be.disabled')
}

}

export default SignInPage
Loading