feat: refs #6943 sh script to create branch and copy e2e tests
This commit is contained in:
parent
c4f2ea032c
commit
828b2aa557
|
@ -0,0 +1,42 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Verificar si se pasaron los parámetros correctos
|
||||
if [ "$#" -ne 3 ]; then
|
||||
echo "Uso: $0 <id_tarea> <modulo> <e2e_path>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Asignar parámetros a variables
|
||||
ID_TAREA=$1
|
||||
MODULO=$2
|
||||
E2E_PATH=$3
|
||||
|
||||
# Nombre de la rama
|
||||
BRANCH_NAME="${ID_TAREA}_${MODULO}_missing_e2e"
|
||||
|
||||
# Paso 1: Crear la rama local a partir de dev
|
||||
git checkout dev
|
||||
git pull origin dev
|
||||
git checkout -b "${BRANCH_NAME}"
|
||||
|
||||
# Paso 2: Copiar archivos al directorio destino
|
||||
SOURCE_DIR="../salix/e2e/paths/${E2E_PATH}"
|
||||
DEST_DIR="../test-processing/tests"
|
||||
|
||||
mkdir -p "${DEST_DIR}"
|
||||
cp -r "${SOURCE_DIR}"/* "${DEST_DIR}"
|
||||
|
||||
# Paso 3: Ejecutar el comando node
|
||||
cd ../test-processing
|
||||
PROCESS_SCRIPT="../test-processing/index.js"
|
||||
node "${PROCESS_SCRIPT}"
|
||||
cd ../salix-front
|
||||
|
||||
# Paso 4: Copiar archivos procesados al destino Cypress
|
||||
PROCESSED_DIR="../test-processing/processedTests"
|
||||
CYPRESS_DEST="./test/cypress/integration/${MODULO}"
|
||||
mkdir -p "${CYPRESS_DEST}"
|
||||
cp -r "${PROCESSED_DIR}"/* "${CYPRESS_DEST}"
|
||||
|
||||
# Confirmación final
|
||||
echo "Flujo completado exitosamente. Revisa los resultados."
|
|
@ -0,0 +1,43 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Verificar si se pasaron los parámetros correctos
|
||||
if [ "$#" -ne 3 ]; then
|
||||
echo "Uso: $0 <id_tarea> <modulo> <e2e_path>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Asignar parámetros a variables
|
||||
ID_TAREA=$1
|
||||
MODULO=$2
|
||||
E2E_PATH=$3
|
||||
|
||||
# Nombre de la rama
|
||||
BRANCH_NAME="${ID_TAREA}_${MODULO}_missing_e2e"
|
||||
|
||||
# Paso 1: Crear la rama local a partir de dev
|
||||
echo "git checkout dev"
|
||||
echo "git pull origin dev"
|
||||
echo "git checkout -b ${BRANCH_NAME}"
|
||||
|
||||
# Paso 2: Copiar archivos al directorio destino
|
||||
SOURCE_DIR="../salix/e2e/paths/${E2E_PATH}"
|
||||
DEST_DIR="../test-processing/tests"
|
||||
|
||||
echo "mkdir -p ${DEST_DIR}"
|
||||
echo "cp -r ${SOURCE_DIR}/* ${DEST_DIR}"
|
||||
|
||||
# Paso 3: Ejecutar el comando node
|
||||
echo "cd ../test-processing"
|
||||
PROCESS_SCRIPT="../test-processing/index.js"
|
||||
echo "node ${PROCESS_SCRIPT}"
|
||||
echo "cd ../salix-front"
|
||||
|
||||
# Paso 4: Copiar archivos procesados al destino Cypress
|
||||
PROCESSED_DIR="../test-processing/processedTests"
|
||||
CYPRESS_DEST="./test/cypress/integration/${MODULO}"
|
||||
|
||||
echo "mkdir -p ${CYPRESS_DEST}"
|
||||
echo "cp -r ${PROCESSED_DIR}/* ${CYPRESS_DEST}"
|
||||
|
||||
# Confirmación final
|
||||
echo "Flujo completado (pendiente de ejecución real). Valida los comandos antes de proceder."
|
|
@ -1,4 +1,7 @@
|
|||
const { defineConfig } = require('cypress');
|
||||
// https://docs.cypress.io/app/tooling/reporters
|
||||
// https://docs.cypress.io/app/references/configuration
|
||||
// https://www.npmjs.com/package/cypress-mochawesome-reporter
|
||||
|
||||
module.exports = defineConfig({
|
||||
e2e: {
|
||||
|
@ -9,13 +12,14 @@ module.exports = defineConfig({
|
|||
supportFile: 'test/cypress/support/index.js',
|
||||
videosFolder: 'test/cypress/videos',
|
||||
video: false,
|
||||
specPattern: 'test/cypress/integration/**/*.spec.js',
|
||||
specPattern: 'test/cypress/integration/vnComponent/vnLocation.spec.js',
|
||||
experimentalRunAllSpecs: true,
|
||||
watchForFileChanges: true,
|
||||
reporter: 'cypress-mochawesome-reporter',
|
||||
reporterOptions: {
|
||||
charts: true,
|
||||
reportPageTitle: 'Cypress Inline Reporter',
|
||||
reportFilename: '[status]_[datetime]-report',
|
||||
embeddedScreenshots: true,
|
||||
reportDir: 'test/cypress/reports',
|
||||
inlineAssets: true,
|
||||
|
|
Binary file not shown.
|
@ -11,6 +11,7 @@
|
|||
"lint": "eslint --ext .js,.vue ./",
|
||||
"format": "prettier --write \"**/*.{js,vue,scss,html,md,json}\" --ignore-path .gitignore",
|
||||
"test:e2e": "cypress open",
|
||||
"test:e2e:run": "cypress run",
|
||||
"test:e2e:ci": "npm run resetDatabase && cd ../salix-front && cypress run",
|
||||
"test": "echo \"See package.json => scripts for available tests.\" && exit 0",
|
||||
"test:unit": "vitest",
|
||||
|
@ -64,4 +65,4 @@
|
|||
"vite": "^5.1.4",
|
||||
"vitest": "^0.31.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
describe('Client create path', () => {
|
||||
it(`should search for the user Carol Danvers to confirm it isn't created yet`, async() => {
|
||||
it('should now access to the create client view by clicking the create-client floating button', async() => {
|
||||
it('should receive an error when clicking the create button having name and Business name fields empty',
|
||||
it(`should create a new province`, async() => {
|
||||
it(`should create a new city`, async() => {
|
||||
it(`should create a new post code`, async() => {
|
||||
it(`should attempt to create a new user with all it's data but wrong email`, async() => {
|
||||
it(`should attempt to create a new user with all it's data but wrong business type`, async() => {
|
||||
it(`should attempt to create a new user with all it's data but wrong postal code`, async() => {
|
||||
it(`should check for autocompleted city, province and country`, async() => {
|
||||
it(`should create a new user with all correct data`, async() => {
|
||||
it('should click on the Clients button of the top bar menu', async() => {
|
||||
it(`should search for the user Carol Danvers to confirm it exists`, async() => {
|
|
@ -0,0 +1,21 @@
|
|||
describe('Client Edit basicData path', () => {
|
||||
describe('as employee', () => {
|
||||
it('should not be able to change the salesPerson', async() => {
|
||||
it('should edit the client basic data but leave salesPerson untainted', async() => {
|
||||
it('should confirm the name have been edited', async() => {
|
||||
it('should confirm the contact name have been edited', async() => {
|
||||
it('should confirm the business type have been edited', async() => {
|
||||
it('should confirm the email have been edited', async() => {
|
||||
it('should confirm the channel have been selected', async() => {
|
||||
it('should confirm the previous client have been selected', async() => {
|
||||
describe('as salesAssistant', () => {
|
||||
it('should navigate to a client basic data', async() => {
|
||||
it('should be able to change the salesPerson', async() => {
|
||||
it('should edit the client basic data including salesPerson', async() => {
|
||||
it('should now confirm the name have been edited', async() => {
|
||||
it('should now confirm the contact name have been edited', async() => {
|
||||
it('should now confirm the email have been edited', async() => {
|
||||
it('should now confirm the phone have been edited', async() => {
|
||||
it('should now confirm the mobile have been edited', async() => {
|
||||
it('should confirm the sales person have been selected', async() => {
|
||||
it('should now confirm the channel have been selected', async() => {
|
|
@ -0,0 +1,22 @@
|
|||
describe('Client Edit fiscalData path', () => {
|
||||
describe('as employee', () => {
|
||||
it(`should click on the 1st edit icon to check EQtax isnt checked`, async() => {
|
||||
it(`should go back to addresses then select the second one and confirm the EQtax isnt checked`, async() => {
|
||||
it(`should click on the fiscal data button`, async() => {
|
||||
it('should not be able to edit the verified data checkbox', async() => {
|
||||
describe('as administrative', () => {
|
||||
it(`should edit the fiscal data but fail as the fiscal id ain't valid`, async() => {
|
||||
it(`should edit the fiscal this time with a valid fiscal id`, async() => {
|
||||
it('should propagate the Equalization tax', async() => {
|
||||
it('should receive an error if the fiscal id contains A or B at the beginning', async() => {
|
||||
it('should edit the fiscal data correctly as VIES isnt checked and fiscal id is valid for EQtax', async() => {
|
||||
it(`should click on the addresses button to access to the client's addresses`, async() => {
|
||||
it(`should click on the 1st edit icon to confirm EQtax is checked`, async() => {
|
||||
it(`should go back to addresses then select the second one and confirm the EQtax is checked`, async() => {
|
||||
it('should navigate back to fiscal data and uncheck EQtax then check VIES', async() => {
|
||||
it('should propagate the Equalization tax changes', async() => {
|
||||
it('should confirm its name have been edited', async() => {
|
||||
it('should confirm the fiscal data have been edited', async() => {
|
||||
it(`should click on the addresses button to access to the client's addresses`, async() => {
|
||||
it(`should click on the 1st edit icon to access the address details and uncheck EQtax checkbox`, async() => {
|
||||
it('should navigate back to fiscal data to confirm invoice by address is now checked', async() => {
|
|
@ -0,0 +1,7 @@
|
|||
describe('Client Edit billing data path', () => {
|
||||
it(`should attempt to edit the billing data without an IBAN but fail`, async() => {
|
||||
it(`should edit the billing data and save the form`, async() => {
|
||||
it(`should create a new BIC code`, async() => {
|
||||
it(`should confirm the IBAN pay method was sucessfully saved`, async() => {
|
||||
it(`should clear the BIC code field, update the IBAN to see how he BIC code autocompletes`, async() => {
|
||||
it('should confirm the billing data have been edited', async() => {
|
|
@ -0,0 +1,14 @@
|
|||
describe('Client Add address path', () => {
|
||||
it(`should click on the add new address button to access to the new address form`, async() => {
|
||||
it('should receive an error after clicking save button as consignee, street and town fields are empty', async() => {
|
||||
it('should confirm that the city and province are propertly filled', async() => {
|
||||
it(`should throw after clicking save button as consignee, incoterms and customsAgent are empty`, async() => {
|
||||
it(`should receive an error after clicking save button as customsAgent is empty`, async() => {
|
||||
it(`should create a new custom agent and then save the address`, async() => {
|
||||
it(`should navigate back to the addresses index`, async() => {
|
||||
it(`should confirm the new address exists and it's the default one`, async() => {
|
||||
it('should click on the make default icon of the second address', async() => {
|
||||
it(`should confirm the default address is the expected one`, async() => {
|
||||
it(`should click on the edit icon of the default address`, async() => {
|
||||
it(`should click on the active checkbox and receive an error to save it because it is the default address`, async() => {
|
||||
it(`should go back to the addreses section by clicking the cancel button`, async() => {
|
|
@ -0,0 +1,5 @@
|
|||
describe('Client add address notes path', () => {
|
||||
it(`should click on the edit icon of the default address`, async() => {
|
||||
it('should not save a description without observation type', async() => {
|
||||
it('should not save an observation type without description', async() => {
|
||||
it('should create two new observations', async() => {
|
|
@ -0,0 +1,2 @@
|
|||
describe('Client web access path', () => {
|
||||
it('should modify and save web access attributes', async() => {
|
|
@ -0,0 +1,4 @@
|
|||
describe('Client Add credit path', () => {
|
||||
it(`should click on the add credit button`, async() => {
|
||||
it(`should edit the credit`, async() => {
|
||||
it('should confirm the credit was updated', async() => {
|
|
@ -0,0 +1,4 @@
|
|||
describe('Client Add greuge path', () => {
|
||||
it(`should click on the add greuge button`, async() => {
|
||||
it(`should receive an error if all fields are empty but date and type on submit`, async() => {
|
||||
it(`should create a new greuge with all its data and confirm the greuge was added to the list`, async() => {
|
|
@ -0,0 +1,2 @@
|
|||
describe('Client mandate path', () => {
|
||||
it('should confirm the client has a mandate of the CORE type', async() => {
|
|
@ -0,0 +1,22 @@
|
|||
describe('Client lock verified data path', () => {
|
||||
describe('as salesPerson', () => {
|
||||
it('should confirm verified data button is disabled for salesPerson', async() => {
|
||||
it('should edit the social name', async() => {
|
||||
it('should confirm the social name have been edited', async() => {
|
||||
describe('as administrative', () => {
|
||||
it('should confirm verified data button is enabled for administrative', async() => {
|
||||
it('should check the Verified data checkbox', async() => {
|
||||
it('should confirm Verified data checkbox is checked', async() => {
|
||||
it('should again edit the social name', async() => {
|
||||
it('should again confirm the social name have been edited', async() => {
|
||||
describe('as salesPerson second run', () => {
|
||||
it('should confirm verified data button is disabled once again for salesPerson', async() => {
|
||||
it('should not be able to save change throwing a verified data error', async() => {
|
||||
describe('as salesAssistant', () => {
|
||||
it('should log in as salesAssistant then get to the client fiscal data', async() => {
|
||||
it('should confirm verified data button is enabled for salesAssistant', async() => {
|
||||
it('should now edit the social name', async() => {
|
||||
it('should now confirm the social name have been edited once and for all', async() => {
|
||||
describe('as salesPerson third run', () => {
|
||||
it('should confirm verified data button is enabled once again', async() => {
|
||||
it('should confirm the form is enabled for salesPerson', async() => {
|
|
@ -0,0 +1,3 @@
|
|||
describe('Client log path', () => {
|
||||
it('should update the clients name', async() => {
|
||||
it('should navigate to the log section', async() => {
|
|
@ -0,0 +1,9 @@
|
|||
describe('Client balance path', () => {
|
||||
it('should now edit the local user config data', async() => {
|
||||
it('should create a new payment that clears the debt', async() => {
|
||||
it('should edit the 1st line reference and check data', async() => {
|
||||
it('should create a new payment, check the cash comparison works correctly and balance value is -100', async() => {
|
||||
it('should create a new payment and check the cash exceeded the maximum', async() => {
|
||||
it('should create a new payment that sets the balance back to negative value and check it', async() => {
|
||||
it('should now click on the Clients button of the top bar menu', async() => {
|
||||
it('should now search for the user Petter Parker not check the payment button is not present', async() => {
|
|
@ -0,0 +1,12 @@
|
|||
describe('User config', () => {
|
||||
describe('as salesPerson', () => {
|
||||
it('should login', async() => {
|
||||
it('should now open the user config form to check the settings', async() => {
|
||||
describe('as employee', () => {
|
||||
it('should log in', async() => {
|
||||
it('should open the user config form to check the settings', async() => {
|
||||
it('should now edit the user config data', async() => {
|
||||
describe('as salesPerson 2nd run', () => {
|
||||
it('should log in once more', async() => {
|
||||
it('should again open the user config form to check the local settings', async() => {
|
||||
it('should now clear the local settings', async() => {
|
|
@ -0,0 +1,5 @@
|
|||
describe('Client web Payment', () => {
|
||||
describe('as employee', () => {
|
||||
it('should not be able to confirm payments', async() => {
|
||||
describe('as administrative', () => {
|
||||
it('should be able to confirm payments', async() => {
|
|
@ -0,0 +1,4 @@
|
|||
describe('Client DMS', () => {
|
||||
describe('as salesPerson', () => {
|
||||
it('should delete de first file', async() => {
|
||||
it(`should click on the first document line worker name making the descriptor visible`, async() => {
|
|
@ -0,0 +1,3 @@
|
|||
describe('Client contacts', () => {
|
||||
it('should add a contact', async() => {
|
||||
it('should delete de contact', async() => {
|
|
@ -0,0 +1,11 @@
|
|||
describe('Client summary path', () => {
|
||||
it('should reach the first route summary section', async() => {
|
||||
it('should display details from the client on the header', async() => {
|
||||
it('should display some basic data', async() => {
|
||||
it('should display fiscal address details', async() => {
|
||||
it('should display some fiscal data', async() => {
|
||||
it('should display pay method details', async() => {
|
||||
it('should display default address details', async() => {
|
||||
it('should display web access details', async() => {
|
||||
it('should display business data', async() => {
|
||||
it('should display financial information', async() => {
|
|
@ -0,0 +1,14 @@
|
|||
describe('Client credit insurance path', () => {
|
||||
it('should open the create a new credit contract form', async() => {
|
||||
it('should create a new credit contract', async() => {
|
||||
it(`should verify the addNewContract button is not present since there's an active contract`, async() => {
|
||||
it(`should click the view credits button`, async() => {
|
||||
it('should click the add new credit button which opens the new credit form', async() => {
|
||||
it('should fill the form but provide no grade to the new credit hence fail', async() => {
|
||||
it('should provide a correct grade and succesfully save a new credit', async() => {
|
||||
it('should be redirected to the credit index', async() => {
|
||||
it('should check the amount of credits is the expected', async() => {
|
||||
it('should navigate to the credit insurance section', async() => {
|
||||
it('should bring the current contract to an end', async() => {
|
||||
it(`should verify the addNewContract button is now present since there's no active contract`, async() => {
|
||||
it(`should verify the endCurrentContract button is not present since there's no active contract`, async() => {
|
|
@ -0,0 +1,7 @@
|
|||
describe('Client defaulter path', () => {
|
||||
it('should count the amount of clients in the turns section', async() => {
|
||||
it('should check contain expected client', async() => {
|
||||
it('should first observation not changed', async() => {
|
||||
it('should not add empty observation', async() => {
|
||||
it('should checked all defaulters', async() => {
|
||||
it('should add observation for all clients', async() => {
|
|
@ -0,0 +1,4 @@
|
|||
describe('Client unpaid path', () => {
|
||||
it('should set cliet unpaid', async() => {
|
||||
it('should save unpaid', async() => {
|
||||
it('should confirm the unpaid have been saved', async() => {
|
|
@ -0,0 +1,2 @@
|
|||
describe('Client Send balance compensation', () => {
|
||||
it(`should click on send compensation button`, async() => {
|
|
@ -91,6 +91,11 @@ Cypress.Commands.add('selectOption', (selector, option) => {
|
|||
cy.get(selector).click();
|
||||
cy.get('.q-menu .q-item').contains(option).click();
|
||||
});
|
||||
Cypress.Commands.add('countSelectOptions', (selector, option) => {
|
||||
cy.waitForElement(selector);
|
||||
cy.get(selector).click();
|
||||
cy.get('.q-menu .q-item').should('have.length', option);
|
||||
});
|
||||
|
||||
Cypress.Commands.add('fillInForm', (obj, form = '.q-form > .q-card') => {
|
||||
cy.waitForElement('.q-form > .q-card');
|
||||
|
|
Loading…
Reference in New Issue