diff --git a/CHANGELOG.md b/CHANGELOG.md index 10b7c73f7..dd75a00a4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,187 @@ +# Version 25.10 - 2025-03-11 + +### Added 🆕 + +- chore: refs #6695 empty commit by:alexm +- chore: refs #6695 get docker compose version by:alexm +- chore: refs #6695 try use docker compose by:alexm +- feat: add --browser chromium by:Javier Segarra +- feat: docker pull back image by:alexm +- feat(jenkinsE2E): refs #6695 new image by:alexm +- feat(jenkinsE2E): refs #6695 try fix db by:alexm +- feat(jenkinsE2E): refs #6695 try new sintax by:alexm +- feat(Jenkinsfile): refs #8714 add CHANGE_TARGET environment variable logging (origin/8714-devToTest, 8714-devToTest) by:alexm +- feat: refs #6695 add additional test directories for Cypress integration tests in Jenkinsfile by:alexm +- feat: refs #6695 add cypress-cache volume to docker-compose.e2e.yml by:alexm +- feat: refs #6695 add Dockerfile for Cypress setup and update Jenkinsfile for installation steps by:alexm +- feat: refs #6695 add setup and e2e testing by:alexm +- feat: refs #6695 better stages for e2e by:alexm +- feat: refs #6695 better stages for e2e rollback by:alexm +- feat: refs #6695 install Cypress during Jenkins pipeline setup by:alexm +- feat: refs #6695 jenkins run e2e by:alexm +- feat: refs #6695 jenkins run e2e front deteach by:alexm +- feat: refs #6695 jenkins run e2e rebuild by:alexm +- feat: refs #6695 jenkins run e2e remove ports by:alexm +- feat: refs #6695 jenkins run e2e try down and rm by:alexm +- feat: refs #6695 jenkins run e2e try fix db by:alexm +- feat: refs #6695 jenkins run e2e whitout rebuild by:alexm +- feat: refs #6695 pull salix-back image and use by:alexm +- feat: refs #6695 run e2e in docker by:alexm +- feat: refs #6695 run front by:alexm +- feat: refs #6695 run front quasar build by:alexm +- feat: refs #6695 run parallel e2e in local by:alexm +- feat: refs #6695 update cypress cache path command in Jenkinsfile by:alexm +- feat: refs #6695 update cypress-cache volume path in docker-compose.e2e.yml by:alexm +- feat: refs #6695 update cypress command in Jenkinsfile and docker-compose.e2e.yml by:alexm +- feat: refs #6695 update Docker configurations and Cypress settings for improved local development (origin/6695-docker_push_2, 6695-docker_push_2) by:alexm +- feat: refs #6695 when failure, clean by:alexm +- feat: refs #7937 add import claim button to ClaimAction component by:jgallego +- feat: refs #7937 add shelving selection to claim actions with data fetching by:jgallego +- feat: refs #8348 Added grouping by:guillermo +- feat: refs #8402 added lost filters from Salix by:Jon +- feat: refs #8484 add addressId to createForm in CustomerDescriptor by:jorgep +- feat: refs #8484 overwrite Cypress visit command to ensure main element exists by:jorgep +- feat: refs #8555 added new filter field and translations by:Jon +- feat: refs #8593 added summary button & modified e2e tests by:provira +- feat: refs #8593 changed parking to VnTable and modified e2e tests by:provira +- feat: refs #8599 added new test and translations by:Jon +- feat: refs #8599 modified tests to be more complete and added new ones by:Jon +- feat: refs #8697 enable data-cy attribute for VnTable, update test cases to remove skips and adjust selectors by:pablone +- feat: rename test:unit by test:front by:Javier Segarra +- feat: try run salix back by:alexm +- fix: style w-80 by:Javier Segarra +- Merge pull request 'fix: style' (!1425) from warmfix_vntable_card_style into test by:Javier Segarra + +### Changed 📦 + +- ci: refs #6695 Docker & Jenkinsfile fixes/refactor by:Juan Ferrer Toribio +- ci: refs #6695 refactor Cypress setup in Jenkinsfile and replace local docker-compose with new configuration by:alexm +- perf: refs #6695 only necessary by:alexm +- refactor: adjust translation to standardize it by:Jon +- refactor: refs #6695 comment out vnComponent tests in Jenkinsfile by:alexm +- refactor: refs #6695 improve group size calculation for parallel test execution in Jenkinsfile by:alexm +- refactor: refs #6695 improve parallel test execution logic in Jenkinsfile by:alexm +- refactor: refs #6695 simplify Docker cleanup commands in Jenkinsfile by:alexm +- refactor: refs #6695 update Docker setup for Cypress and remove obsolete files by:alexm +- refactor: refs #6695 update E2E test execution to support parallel groups and improve by:alexm +- refactor: refs #6695 update Jenkinsfile and Dockerfile to use 'developer' by:alexm +- refactor: refs #6695 update Jenkinsfile to run E2E tests in parallel and simplify docker-compose command by:alexm +- refactor: refs #6897 clean up Cypress configuration and improve entry list filtering (origin/6897-fixEntryE2e) by:pablone +- refactor: refs #7414 update VnLog component to change display order value changes on update action by:jtubau +- refactor: refs #7937 align columns to the right and add shelvingCode to ClaimSummaryAction by:jgallego +- refactor: refs #8484 add data-cy attribute for claim photo image and update test to use it by:jorgep +- refactor: refs #8484 clean up test files by removing commented issue references and updating test cases by:jorgep +- refactor: refs #8484 enhance login command with session management and clean up unused commands by:jtubau +- refactor: refs #8484 improve search input behavior and enhance visit command with DOM content load by:jtubau +- refactor: refs #8484 improve selectOption command with retry logic for visibility checks by:jtubau +- refactor: refs #8484 remove comment in wagonCreate.spec.js by:jtubau +- refactor: refs #8484 remove redundant visit command overwrite by:jorgep +- refactor: refs #8484 remove unnecessary domContentLoad calls from client tests by:jorgep +- refactor: refs #8484 remove unnecessary intercepts and waits in ticket and zone tests by:jorgep +- refactor: refs #8484 simplify image dialog test by using aliases for elements by:jorgep +- refactor: refs #8484 streamline assertions in ClaimNotes test by:jorgep +- refactor: refs #8484 streamline login command and remove commented code by:jorgep +- refactor: refs #8484 update specPattern to include all spec files and remove data-cy attribute by:jorgep +- refactor: refs #8594 update vehicle summary tests to use expected variable for consistency by:jtubau +- refactor: refs #8599 corrected it name by:Jon +- refactor: refs #8599 invoice out list e2e by:Jon +- refactor: refs #8599 requested changes by:Jon +- refactor: refs #8606 modified table height and deleted void file by:Jon +- refactor: refs #8606 modified table width and order by:Jon +- refactor: refs #8606 modified upcoming deliveries view by:Jon +- refactor: refs #8606 translations by:Jon +- refactor: refs #8618 simplify selectors and improve test readability in routeExtendedList.spec.js by:jtubau +- refactor: refs #8620 update RouteAutonomous to notify on data save and change invoice reference display by:jtubau +- refactor: remove default browser setting from Cypress configuration by:alexm +- refactor: remove unused variables by:alexm +- refactor: skip claimNotes by:alexm +- refactor: update labels and conditions in Claim components by:jgallego +- refactor: use constant for account input selector in VnAccountNumber tests by:alexm + +### Fixed 🛠️ + +- build: refs #6695 cypress-setup fix volume by:alexm +- build: refs #6695 cypress-setup fix volume (origin/6695-docker_push, 6695-docker_push) by:alexm +- ci: refs #6695 cypress reporter fix by:Juan Ferrer Toribio +- ci: refs #6695 Docker & Jenkinsfile fixes/refactor by:Juan Ferrer Toribio +- ci: refs #6695 JUnit report fixes by:Juan Ferrer Toribio +- ci: refs #6695 vitest junit file fix by:Juan Ferrer Toribio +- feat(jenkinsE2E): refs #6695 try fix db by:alexm +- feat: refs #6695 jenkins run e2e try fix db by:alexm +- fix: add data-cy attribute to card button for improved testing by:jtubau +- fix: added lost code by:Jon +- fix: add --init flag to Cypress Docker container for improved stability by:alexm +- fix: add mapper before Save by:Javier Segarra +- fix: cy.domContentLoad(); not exist by:alexm +- fix: elements position by:Javier Segarra +- fix: fixed select not filtering when typing by:Jon +- fix: fixed wagonTypeCreate test (origin/wagonTypeTestFix) by:PAU ROVIRA ROSALENY +- fix: fix sctions by:carlossa +- fix(Jenkinsfile): enhance Docker registry credentials handling with dynamic URL (origin/warmFix_use_withDockerRegistry, warmFix_use_withDockerRegistry) by:alexm +- fix(Jenkinsfile): update Docker registry credentials handling in E2E stage by:alexm +- fix: junit report by:alexm +- fix: merge revert by:alexm +- fix: merge test to dev by:alexm +- fix: prevent 'cypress run' error to show junit by:alexm +- fix: refs #6695 add --volumes flag to docker-compose down command by:alexm +- fix: refs #6695 checkErrors(folderName) by:alexm +- fix: refs #6695 clientBasicData by:alexm +- fix: refs #6695 dockerFile by:alexm +- fix: refs #6695 e2e.sh by:alexm +- fix: refs #6695 e2e stockBought by:alexm +- fix: refs #6695 fix e2e's by:alexm +- fix: refs #6695 storage by:alexm +- fix: refs #6695 try by:alexm +- fix: refs #6695 try parallel by:alexm +- fix: refs #6695 update Cypress cache handling and increase wait timeout for elements by:alexm +- fix: refs #6695 update Cypress configuration and Docker setup for improved testing by:alexm +- fix: refs #6695 update E2E stages to run tests in parallel for specific folders by:alexm +- fix: refs #6695 update remove Cypress installation by:alexm +- fix: refs #6695 zoneWarehouse est by:alexm +- fix: refs #6943 e2e clientList, formModel by:carlossa +- fix: refs #6943 formModel workerDepartment by:carlossa +- fix: refs #7323 e2e (origin/7323-fixe2e) by:carlossa +- fix: refs #7323 notification manager by:carlossa +- fix: refs #7414 updated default value rendering for non-update scenarios by:jtubau +- fix: refs #7414 update VnLog.vue to correctly display log actions and values by:jtubau +- fix: refs #7937 update claimId in ClaimAction test to reflect correct value (origin/7937-claimAgile) by:jgallego +- fix: refs #8484 ensure document is fully loaded before visiting pages in tests by:jorgep +- fix: refs #8484 fixed some tests to enable previously skipped cases and enhance functionality by:jtubau +- fix: refs #8484 remove unused addressId from createForm in CustomerDescriptor.vue by:jtubau +- fix: refs #8484 rollback by:jorgep +- fix: refs #8484 update Boss field type to 'selectWorker' and add selectWorkerOption command by:jtubau +- fix: refs #8484 update Boss type from 'selectWorker' to 'select' by:jorgep +- fix: refs #8484 update parking list URL to correct shelving path in integration test by:jtubau +- fix: refs #8484 update selector for buyLabel button in myEntry test by:jtubau +- fix: refs #8484 update selector for removing wagon type in wagonCreate.spec.js by:jtubau +- fix: refs #8484 update wagon type deletion selector and clean up unused code in commands.js by:jtubau +- fix: refs #8593 fixed parking e2e tests by:provira +- fix: refs #8606 fixed list e2e test by:Jon +- fix: refs #8620 add module name to InvoiceInSummary by:jtubau +- fix: refs #8623 fixed different errors by:Jon +- fix: remove info by:carlossa +- fix: remove old end-to-end test files before building Docker image by:alexm +- fix: revert cypress.config by:alexm +- fix: style w-80 by:Javier Segarra +- fix: unnecessary function by:alexm +- fix: update docker-compose command to remove volumes on teardown by:alexm +- fix: update Jenkinsfile to remove specific end-to-end test files by:alexm +- fix: update Jenkinsfile to use environment variable for Docker registry credentials by:alexm +- fix: warmFix vnInput dataCy by:alexm +- Merge pull request 'fix: style' (!1425) from warmfix_vntable_card_style into test by:Javier Segarra +- revert: browser chromium package.json by:Javier Segarra +- Revert "revert 1015acefb7e400be2d8b5958dba69b4d98276b34" by:alexm +- test: refs #6695 e2e fix allowedHosts by:alexm +- test: refs #6695 e2e fix back image by:alexm +- test: refs #6695 e2e fix base urls by:alexm +- test: refs #6695 e2e fix command by:alexm +- test: refs #6695 e2e fix connection db by:alexm +- test: refs #6695 e2e fix network by:alexm +- test: refs #6695 e2e fix sequential by:alexm +- test: refs #6695 fix e2e by:alexm +- test: refs #6695 fix e2e command by:alexm +- test: refs #6695 fix selectOption command by:alexm + # Version 25.08 - 2025-03-04 ### Added 🆕 diff --git a/src/components/FilterItemForm.vue b/src/components/FilterItemForm.vue index cacfde1b3..cca8d80c3 100644 --- a/src/components/FilterItemForm.vue +++ b/src/components/FilterItemForm.vue @@ -188,7 +188,7 @@ const selectItem = ({ id }) => { > diff --git a/src/components/FilterTravelForm.vue b/src/components/FilterTravelForm.vue index c522d0269..4aad327b2 100644 --- a/src/components/FilterTravelForm.vue +++ b/src/components/FilterTravelForm.vue @@ -196,7 +196,7 @@ const selectTravel = ({ id }) => { > diff --git a/src/components/LeftMenu.vue b/src/components/LeftMenu.vue index 9a9949499..8e83bf579 100644 --- a/src/components/LeftMenu.vue +++ b/src/components/LeftMenu.vue @@ -77,6 +77,7 @@ watch( function findMatches(search, item) { const matches = []; function findRoute(search, item) { + if (!item?.children) return; for (const child of item.children) { if (search?.indexOf(child.name) > -1) { matches.push(child); @@ -92,7 +93,7 @@ function findMatches(search, item) { } function addChildren(module, route, parent) { - const menus = route?.meta?.menu ?? route?.menus?.[props.source]; //backwards compatible + const menus = route?.meta?.menu; if (!menus) return; const matches = findMatches(menus, route); @@ -107,11 +108,7 @@ function getRoutes() { main: getMainRoutes, card: getCardRoutes, }; - try { - handleRoutes[props.source](); - } catch (error) { - throw new Error(`Method is not defined`); - } + handleRoutes[props.source](); } function getMainRoutes() { const modules = Object.assign([], navigation.getModules().value); @@ -122,7 +119,6 @@ function getMainRoutes() { ); if (!moduleDef) continue; item.children = []; - addChildren(item.module, moduleDef, item.children); } @@ -132,21 +128,16 @@ function getMainRoutes() { function getCardRoutes() { const currentRoute = route.matched[1]; const currentModule = toLowerCamel(currentRoute.name); - let moduleDef = routes.find((route) => toLowerCamel(route.name) === currentModule); + let moduleDef; - if (!moduleDef) return; - if (!moduleDef?.menus) moduleDef = betaGetRoutes(); - addChildren(currentModule, moduleDef, items.value); -} - -function betaGetRoutes() { - let menuRoute; let index = route.matched.length - 1; - while (!menuRoute && index > 0) { - if (route.matched[index]?.meta?.menu) menuRoute = route.matched[index]; + while (!moduleDef && index > 0) { + if (route.matched[index]?.meta?.menu) moduleDef = route.matched[index]; index--; } - return menuRoute; + + if (!moduleDef) return; + addChildren(currentModule, moduleDef, items.value); } async function togglePinned(item, event) { diff --git a/src/components/VnTable/VnFilter.vue b/src/components/VnTable/VnFilter.vue index e9660e4c2..82d7c772c 100644 --- a/src/components/VnTable/VnFilter.vue +++ b/src/components/VnTable/VnFilter.vue @@ -6,6 +6,7 @@ import VnSelect from 'components/common/VnSelect.vue'; import VnInput from 'components/common/VnInput.vue'; import VnInputDate from 'components/common/VnInputDate.vue'; import VnInputTime from 'components/common/VnInputTime.vue'; +import VnCheckbox from 'components/common/VnCheckbox.vue'; import VnColumn from 'components/VnTable/VnColumn.vue'; const $props = defineProps({ @@ -106,7 +107,7 @@ const components = { }, }, checkbox: { - component: markRaw(QCheckbox), + component: markRaw(VnCheckbox), event: updateEvent, attrs: { class: $props.showTitle ? 'q-py-sm' : 'q-px-md q-py-xs fit', diff --git a/src/components/__tests__/Leftmenu.spec.js b/src/components/__tests__/Leftmenu.spec.js index 4ab8b527f..ef82cf9ad 100644 --- a/src/components/__tests__/Leftmenu.spec.js +++ b/src/components/__tests__/Leftmenu.spec.js @@ -15,10 +15,7 @@ vi.mock('src/router/modules', () => ({ meta: { title: 'customers', icon: 'vn:client', - }, - menus: { - main: ['CustomerList', 'CustomerCreate'], - card: ['CustomerBasicData'], + menu: ['CustomerList', 'CustomerCreate'], }, children: [ { @@ -98,7 +95,7 @@ vi.spyOn(vueRouter, 'useRoute').mockReturnValue({ icon: 'vn:client', moduleName: 'Customer', keyBinding: 'c', - menu: 'customer', + menu: ['customer'], }, }, ], @@ -260,15 +257,6 @@ describe('Leftmenu as main', () => { }); }); - it('should handle a single matched route with a menu', () => { - const route = { - matched: [{ meta: { menu: 'customer' } }], - }; - - const result = vm.betaGetRoutes(); - - expect(result.meta.menu).toEqual(route.matched[0].meta.menu); - }); it('should get routes for main source', () => { vm.props.source = 'main'; vm.getRoutes(); @@ -351,8 +339,9 @@ describe('addChildren', () => { it('should handle routes with no meta menu', () => { const route = { - meta: {}, - menus: {}, + meta: { + menu: [], + }, }; const parent = []; diff --git a/src/components/ui/VnFilterPanel.vue b/src/components/ui/VnFilterPanel.vue index d6b525dc8..93e3a57f2 100644 --- a/src/components/ui/VnFilterPanel.vue +++ b/src/components/ui/VnFilterPanel.vue @@ -54,7 +54,7 @@ const $props = defineProps({ default: 'table', }, redirect: { - type: Boolean, + type: [String, Boolean], default: true, }, arrayData: { diff --git a/src/components/ui/VnNotes.vue b/src/components/ui/VnNotes.vue index eb0804af0..6ce28254d 100644 --- a/src/components/ui/VnNotes.vue +++ b/src/components/ui/VnNotes.vue @@ -186,7 +186,7 @@ function fetchData([data]) { ref="vnPaginateRef" class="show" v-bind="$attrs" - search-url="notes" + :search-url="false" @on-fetch=" newNote.text = ''; newNote.observationTypeFk = null; diff --git a/src/css/app.scss b/src/css/app.scss index b8b53a929..5befd150b 100644 --- a/src/css/app.scss +++ b/src/css/app.scss @@ -15,6 +15,7 @@ body.body--light { --vn-empty-tag: #acacac; --vn-black-text-color: black; --vn-text-color-contrast: white; + --vn-link-color: #1e90ff; background-color: var(--vn-page-color); @@ -38,6 +39,7 @@ body.body--dark { --vn-empty-tag: #2d2d2d; --vn-black-text-color: black; --vn-text-color-contrast: black; + --vn-link-color: #66bfff; background-color: var(--vn-page-color); @@ -49,7 +51,7 @@ a { } .link { - color: $color-link; + color: var(--vn-link-color); cursor: pointer; &--white { @@ -58,14 +60,14 @@ a { } .tx-color-link { - color: $color-link !important; + color: var(--vn-link-color) !important; } .tx-color-font { - color: $color-link !important; + color: var(--vn-link-color) !important; } .header-link { - color: $color-link !important; + color: var(--vn-link-color) !important; cursor: pointer; border-bottom: solid $primary; border-width: 2px; diff --git a/src/css/quasar.variables.scss b/src/css/quasar.variables.scss index 22c6d2b56..45d18af7e 100644 --- a/src/css/quasar.variables.scss +++ b/src/css/quasar.variables.scss @@ -24,7 +24,6 @@ $alert: $negative; $white: #fff; $dark: #3d3d3d; // custom -$color-link: #66bfff; $color-spacer-light: #a3a3a31f; $color-spacer: #7979794d; $border-thin-light: 1px solid $color-spacer-light; diff --git a/src/i18n/locale/en.yml b/src/i18n/locale/en.yml index d7187371e..7095942ee 100644 --- a/src/i18n/locale/en.yml +++ b/src/i18n/locale/en.yml @@ -531,6 +531,7 @@ ticket: customerCard: Customer card ticketList: Ticket List newOrder: New Order + ticketClaimed: Claimed ticket boxing: expedition: Expedition created: Created diff --git a/src/i18n/locale/es.yml b/src/i18n/locale/es.yml index fc3018f39..3336f3b99 100644 --- a/src/i18n/locale/es.yml +++ b/src/i18n/locale/es.yml @@ -538,6 +538,7 @@ ticket: customerCard: Ficha del cliente ticketList: Listado de tickets newOrder: Nuevo pedido + ticketClaimed: Ticket reclamado boxing: expedition: Expedición created: Creado diff --git a/src/pages/Account/Alias/Card/AliasSummary.vue b/src/pages/Account/Alias/Card/AliasSummary.vue index b4b9abd25..cfd33ec82 100644 --- a/src/pages/Account/Alias/Card/AliasSummary.vue +++ b/src/pages/Account/Alias/Card/AliasSummary.vue @@ -5,6 +5,7 @@ import { useI18n } from 'vue-i18n'; import CardSummary from 'components/ui/CardSummary.vue'; import VnLv from 'src/components/ui/VnLv.vue'; +import VnTitle from 'src/components/common/VnTitle.vue'; const route = useRoute(); const { t } = useI18n(); @@ -27,13 +28,10 @@ const entityId = computed(() => $props.id || route.params.id);