From 4350e493db747dc88190766cb36bf41a2e65d892 Mon Sep 17 00:00:00 2001 From: Maycol Espinoza Ponce <122275107+Maycol-Espinoza-Ponce@users.noreply.github.com> Date: Mon, 20 Nov 2023 07:54:51 -0600 Subject: [PATCH 01/14] Small changes to delete filters --- src/i18n/UI/Spanish.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/i18n/UI/Spanish.ts b/src/i18n/UI/Spanish.ts index 0889146b..d56e2d1c 100644 --- a/src/i18n/UI/Spanish.ts +++ b/src/i18n/UI/Spanish.ts @@ -322,11 +322,11 @@ export const Spanish = { clearFilters: { filterButtons: [ - { text: "Borra Todos los Filtros", ariaLabel: "Borra Todos los Filtros" }, - { text: "Borra Categorías", ariaLabel: "Borra Categorías" }, - { text: "Borra Municipio Importante", ariaLabel: "Borra Municipio Importante" }, - { text: "Borra Munucipio Menor", ariaLabel: "Borra Munucipio Menor" }, - { text: "Borra Distrito Gobernante", ariaLabel: "Borra Distrito Gobernante" }, + { text: "Borrar Todos los Filtros", ariaLabel: "Borrar Todos los Filtros" }, + { text: "Borrar Categorías", ariaLabel: "Borrar Categorías" }, + { text: "Borrar Provincia", ariaLabel: "Borrar Provincia" }, + { text: "Borrar Cantón", ariaLabel: "Borrar Cantón" }, + { text: "Borrar Distrito", ariaLabel: "Borrar Distrito" }, ] } From 15df3c337798b624fc813d4d10a7dd6ad2f5ba9d Mon Sep 17 00:00:00 2001 From: r-southworth Date: Mon, 20 Nov 2023 16:15:07 -0500 Subject: [PATCH 02/14] update spanish language files --- src/i18n/UI/Spanish.ts | 46 +++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/src/i18n/UI/Spanish.ts b/src/i18n/UI/Spanish.ts index 3d6ef0e3..461f9ef2 100644 --- a/src/i18n/UI/Spanish.ts +++ b/src/i18n/UI/Spanish.ts @@ -22,7 +22,7 @@ export const Spanish = { terms: 'Términos y Condiciones', privacy: "Política de Privacidad", acceptableUse: "Política de uso aceptable", - about: 'Sobre Nosotras', + about: 'Sobre nosotras', impact: 'Impacto', fullPost: "Ver publicación completa", offline: 'Desconectada', @@ -62,7 +62,7 @@ export const Spanish = { signUp: 'inscribirse', signIn: 'Iniciar Sesión', signOut: 'Desconectar', - returnHome: 'Pagina de Inicio', + returnHome: 'Página de Inicio', reset: 'Reiniciar', post: 'Publicar', next: 'Próxima', @@ -75,24 +75,24 @@ export const Spanish = { }, messages: { - noAccount: "¿No tienes una cuenta? Click aquí para ", + noAccount: "¿No tienes una cuenta? Haz click aquí para ", emailValid: 'Dirección de correo electrónico válida', emailLackRequirements: 'El correo electrónico no cumple con los requisitos', passwordLength: 'La contraseña debe ser \n - al menos 6 caracteres de largo \n - contener al menos un número \n - contener una letra mayúscula \n - contener 1 letra minúscula \n - contener al menos carácter especial: \n ! @ # $ % ^ & *', passwordValid: 'Contraseña valida', passwordLackRequirements: 'Contraseña no cumple con los requisitos', - phoneLackRequirements: 'El numero de telefono tiene que tener 8 digitos', + phoneLackRequirements: 'El número de teléfono tiene que tener 8 digitos', phoneValid: 'Número de teléfono válido', passwordMatch: 'Las contraseñas no coinciden', passwordReset: 'Restablecimiento de contraseña', - forgotPassword: '¿Olvidaste tu contraseña? Click aquí para', - alreadyAccount: '¿Ya tienes una cuenta? Click aquí para', + forgotPassword: '¿Olvidaste tu contraseña? Haz click aquí para', + alreadyAccount: '¿Ya tienes una cuenta? Haz click aquí para', error404: 'Algo salió mal', - onlyProvider: 'Solo las proveedoras pueden crear publicaciones.', - signInAsProvider: 'Inicie sesión en una cuenta de proveedor antes de publicar.', + onlyProvider: 'Solo los proveedores pueden crear publicaciones.', + signInAsProvider: 'Inicie sesión en una cuenta de proveedor para poder publicar.', checkEmail: "¡Revise su correo electrónico para ver el enlace de reinicio!", checkConfirmEmail: 'Si este correo electrónico aún no está registrado, recibirá un enlace de confirmación por correo electrónico.', - signIn: "Inicia sesión para acceder a esta página", + signIn: "Inicie sesión para acceder a esta página", createProviderAccount: "Inicie sesión para crear un perfil de proveedor", createClientAccount: "Inicie sesión para crear un perfil de cliente", viewProviderAccount: "No tiene una cuenta de proveedor, por favor cree una para ver su perfil de proveedor", @@ -109,7 +109,7 @@ export const Spanish = { todoFetch: '¡Todo, el perro de servicio, te traerá los servicios que necesitas!', mustSignIn: 'Debe iniciar sesión para ver los servicios disponibles.', profileEdits: '¡Las ediciones del perfil solo se guardarán después de hacer clic en el botón Guardar perfil!', - noClient: "No se encontró ninguna cliente.", + noClient: "No se encontró ningún cliente.", noPostsSearch: "Ninguna publicación coincide con esta búsqueda específica - pruebe con un filtro o palabra clave diferente", }, @@ -144,7 +144,7 @@ export const Spanish = { }, postLabels: { - provider: 'Proveedora: ', + provider: 'Ofrecido por: ', location: 'Ubicación: ', category: 'Categoría: ', image: 'Publicar imagen', @@ -160,7 +160,7 @@ export const Spanish = { }, menus: { services: 'Buscar Servicios', - contactUs: 'Contacta Con Nosotras', + contactUs: 'Contáctenos', }, toolTips: { @@ -181,7 +181,7 @@ export const Spanish = { apiErrors: { missingFields: "Faltan campos obligatorios", noSession: "Sesión no encontrada", - noUser: "Usuario no encontrada", + noUser: "Usuario no encontrado", providerExists: "El perfil del proveedor ya existe", profileCreateError: "Error al crear perfil", profileEditError: "Error al actualizar el perfil", @@ -193,12 +193,12 @@ export const Spanish = { providerCreateProfileError: "Error al crear el perfil del proveedor", providerEditProfileError: "Error al actualizar el perfil del proveedor", noProfileData: "No se devolvieron datos de perfil", - success: "¡Éxito!", + success: "¡Completado!", emailError: "Error al actualizar el correo electrónico", noCategory: "Categoría no encontrada", postError: "Error al crear la publicación", noPost: "No se devolvió ninguna publicación", - clientExists: "La cliente ya existe", + clientExists: "El cliente ya existe", clientCreateProfileError: "Error al crear el perfil del cliente", clientEditProfileError: "Error al actualizar el perfil del cliente", createUserError: "Error al crear usuario, inténtelo nuevamente o contáctenos para obtener ayuda.", @@ -269,7 +269,7 @@ export const Spanish = { { // title: 'Apoyo', links: [ - { text: 'Contacta Con Nosotras', href: 'mailto:support@todoservis.com' }, + { text: 'Contáctenos', href: 'mailto:support@todoservis.com' }, // { text: 'Community Forum', href: '#' }, // { text: 'Professional Services', href: '#' }, // { text: 'Skills', href: '#' }, @@ -299,7 +299,7 @@ export const Spanish = { { ariaLabel: 'Facebook', icon: 'tabler:brand-facebook', href: 'https://www.facebook.com/TodoServisCostaRica' }, // { ariaLabel: 'RSS', icon: 'tabler:rss', href: '/rss.xml' }, { ariaLabel: 'Github', icon: 'tabler:brand-github', href: 'https://github.com/datagrove/marketplace' }, - { ariaLabel: 'Whatsapp', icon: 'tabler:brand-whatsapp', href: 'https://wa.me/message/RUD233VVIVPMG1' }, + { ariaLabel: 'WhatsApp', icon: 'tabler:brand-whatsapp', href: 'https://wa.me/message/RUD233VVIVPMG1' }, { ariaLabel: 'Discord', icon: 'tabler:brand-discord', href: 'https://discord.gg/NpV44vS6bF'}, ], footNote: ` @@ -308,19 +308,19 @@ export const Spanish = { productCategoryInfo: { categories: [ - { name: 'Jardinería', description: 'Obtenga ayuda con su jardín y paisajismo.', ariaLabel: "Jardinería", id: "1" }, + { name: 'Jardinería', description: 'Obtenga ayuda con su jardín y sus áreas verdes.', ariaLabel: "Jardinería", id: "1" }, { name: 'Construcción', description: 'Nueva construcción, adiciones o servicios de reparación', ariaLabel: "Construcción", id: "3" }, { name: 'Belleza', description: 'Salones, Barberias, y otros cuidados personales.', ariaLabel: "Belleza", id: "2" }, - { name: 'Automóvil', description: 'Servicios Automotrices', ariaLabel: "Automóvil", id: "5" }, - { name: 'Computadora', description: 'Reparación y servicios de computadoras', ariaLabel: "Computadora", id: "4" }, - { name: 'Creativadad', description: 'Servicios Creativos', ariaLabel: "Creatividad", id: "6" }, - { name: 'Financiera', description: 'Servicios Financieros', ariaLabel: "Financiera", id: "7" }, + { name: 'Automotriz', description: 'Servicios Automotrices', ariaLabel: "Automotriz", id: "5" }, + { name: 'Computación', description: 'Reparación y servicios de computadoras', ariaLabel: "Computación", id: "4" }, + { name: 'Artes', description: 'Servicios Creativos', ariaLabel: "Artes", id: "6" }, + { name: 'Finanzas', description: 'Servicios Financieros', ariaLabel: "Finanzas", id: "7" }, { name: 'Limpieza', description: 'Servicios de Limpieza', ariaLabel: "Limpieza", id: "8" }, { name: 'Mascotas', description: 'Servicios para Mascotas', ariaLabel: "Mascotas", id: "9" }, { name: 'Legal', description: 'Servicios Legales', ariaLabel: "Servicios Legales", id: "10" }, { name: 'Salud', description: 'Servicios de Salud', ariaLabel: "Salud", id: "11" }, { name: 'Servicios Laborales', description: 'Servicios Laborales', ariaLabel: "Servicios Laborales", id: "12" }, - { name: 'Viajar', description: 'Servicios de Viaje', ariaLabel: "Viajar", id: "13" }, + { name: 'Viajes', description: 'Servicios de Viaje', ariaLabel: "Viajes", id: "13" }, // Add more products as needed ], }, From 778009672e016f19fa90d7628a2ea0dfeb9ac04c Mon Sep 17 00:00:00 2001 From: r-southworth Date: Mon, 20 Nov 2023 16:18:29 -0500 Subject: [PATCH 03/14] update whatsapp in all languages --- src/i18n/UI/English.ts | 2 +- src/i18n/UI/French.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/i18n/UI/English.ts b/src/i18n/UI/English.ts index ccabcf8c..96280dcc 100644 --- a/src/i18n/UI/English.ts +++ b/src/i18n/UI/English.ts @@ -300,7 +300,7 @@ export const English = { { ariaLabel: 'Facebook', icon: 'tabler:brand-facebook', href: 'https://www.facebook.com/TodoServisCostaRica' }, // { ariaLabel: 'RSS', icon: 'tabler:rss', href: '/rss.xml' }, { ariaLabel: 'Github', icon: 'tabler:brand-github', href: 'https://github.com/datagrove/marketplace' }, - { ariaLabel: 'Whatsapp', icon: 'tabler:brand-whatsapp', href: 'https://wa.me/message/RUD233VVIVPMG1'}, + { ariaLabel: 'WhatsApp', icon: 'tabler:brand-whatsapp', href: 'https://wa.me/message/RUD233VVIVPMG1'}, { ariaLabel: 'Discord', icon: 'tabler:brand-discord', href: 'https://discord.gg/NpV44vS6bF'}, ], footNote: ` diff --git a/src/i18n/UI/French.ts b/src/i18n/UI/French.ts index caf49578..400e50cb 100644 --- a/src/i18n/UI/French.ts +++ b/src/i18n/UI/French.ts @@ -300,7 +300,7 @@ export const French = { { ariaLabel: 'Facebook', icon: 'tabler:brand-facebook', href: 'https://www.facebook.com/TodoServisCostaRica' }, // { ariaLabel: 'RSS', icon: 'tabler:rss', href: '/rss.xml' }, { ariaLabel: 'Github', icon: 'tabler:brand-github', href: 'https://github.com/datagrove/marketplace' }, - { ariaLabel: 'Whatsapp', icon: 'tabler:brand-whatsapp', href: 'https://wa.me/message/RUD233VVIVPMG1'}, + { ariaLabel: 'WhatsApp', icon: 'tabler:brand-whatsapp', href: 'https://wa.me/message/RUD233VVIVPMG1'}, { ariaLabel: 'Discord', icon: 'tabler:brand-discord', href: 'https://discord.gg/NpV44vS6bF'}, ], footNote: ` From b4731e813b6acc6161d58fe97fe9e01f7e1b80ae Mon Sep 17 00:00:00 2001 From: r-southworth Date: Mon, 20 Nov 2023 16:23:17 -0500 Subject: [PATCH 04/14] add descriptions for french file --- src/i18n/UI/French.ts | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/i18n/UI/French.ts b/src/i18n/UI/French.ts index 400e50cb..3afd6876 100644 --- a/src/i18n/UI/French.ts +++ b/src/i18n/UI/French.ts @@ -311,19 +311,19 @@ export const French = { productCategoryInfo:{ categories: [ - { name: "Jardinage", description: '', ariaLabel: "Jardinage", id: "1" }, - { name: "Construction", description: '', ariaLabel: "Construction", id: "3" }, - { name: "Beauté", description: '', ariaLabel: "Beauté", id: "2" }, - { name: "Automobile", description: '', ariaLabel: "Automobile", id: "5" }, - { name: "Ordinateur", description: '', ariaLabel: "Ordinateur", id: "4" }, - { name: "Créative", description: '', ariaLabel: "Créative", id: "6" }, - { name: "Financière", description: '', ariaLabel: "Financière", id: "7" }, - { name: "Nettoyage", description: '', ariaLabel: "Nettoyage", id: "8" }, - { name: "Animaux domestiques", description: '', ariaLabel: "Animaux domestiques", id: "9" }, - { name: "Juridique", description: '', ariaLabel: "Juridique", id: "10" }, - { name: "Santé", description: '', ariaLabel: "Santé", id: "11" }, - { name: "Travail", description: '', ariaLabel: "Travail", id: "12" }, - { name: "Voyage", description: '', ariaLabel: "Voyage", id: "13" }, + { name: "Jardinage", description: "Obtenez de l'aide pour votre jardin et votre aménagement paysager.", ariaLabel: "Jardinage", id: "1" }, + { name: "Construction", description: "Nouvelles constructions, ajouts ou services de réparation", ariaLabel: "Construction", id: "3" }, + { name: "Beauté", description: "Salons, barbiers et autres soins personnels.", ariaLabel: "Beauté", id: "2" }, + { name: "Automobile", description: "Services automobiles", ariaLabel: "Automobile", id: "5" }, + { name: "Ordinateur", description: "Réparation et services informatiques", ariaLabel: "Ordinateur", id: "4" }, + { name: "Créative", description: "Services créatifs", ariaLabel: "Créative", id: "6" }, + { name: "Financière", description: "Services financiers", ariaLabel: "Financière", id: "7" }, + { name: "Nettoyage", description: "Services de nettoyage", ariaLabel: "Nettoyage", id: "8" }, + { name: "Animaux domestiques", description: "Services pour animaux de compagnie", ariaLabel: "Animaux domestiques", id: "9" }, + { name: "Juridique", description: "Services juridiques", ariaLabel: "Juridique", id: "10" }, + { name: "Santé", description: "Services de santé", ariaLabel: "Santé", id: "11" }, + { name: "Travail", description: "Services du travail", ariaLabel: "Travail", id: "12" }, + { name: "Voyage", description: "Services de voyage", ariaLabel: "Voyage", id: "13" }, // Add more products as needed ] }, From 65e3193f31975567a1140de22ce896d07aaa8816 Mon Sep 17 00:00:00 2001 From: Meagan Date: Wed, 22 Nov 2023 14:18:36 -0600 Subject: [PATCH 05/14] Fix devUrl link --- src/config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config.ts b/src/config.ts index 7b095b33..1e4482f1 100644 --- a/src/config.ts +++ b/src/config.ts @@ -9,7 +9,7 @@ const CONFIG = { title: 'TodoServis', description: 'Everything you need to get the job done.', url: 'https://todoservis.com/', - devUrl: 'http://localhost:3000', + devUrl: 'http://localhost:4321', pagesDevUrl: 'https://pwa.marketplace-4xm.pages.dev', defaultTheme: 'system', // Values: "system" | "light" | "dark" | "light:only" | "dark:only" From 7ee12b7a9e3dcc39c0272044ccfd25582ad86cf7 Mon Sep 17 00:00:00 2001 From: German Zarkovich <68071939+gerzarko@users.noreply.github.com> Date: Tue, 19 Dec 2023 10:08:03 -0500 Subject: [PATCH 06/14] add testing double check --- .gitignore | 6 +- package-lock.json | 75 ++++++++++++++++++++++++- package.json | 2 + playwright.config.ts | 77 ++++++++++++++++++++++++++ test/testCheckProfile.spec.js | 17 ++++++ test/testCreateAPostAsProvider.spec.js | 26 +++++++++ test/testLogin.spec.js | 13 +++++ 7 files changed, 212 insertions(+), 4 deletions(-) create mode 100644 playwright.config.ts create mode 100644 test/testCheckProfile.spec.js create mode 100644 test/testCreateAPostAsProvider.spec.js create mode 100644 test/testLogin.spec.js diff --git a/.gitignore b/.gitignore index 88ae74a7..617e1766 100644 --- a/.gitignore +++ b/.gitignore @@ -21,4 +21,8 @@ pnpm-debug.log* .DS_Store # Pages created by i18n-astro-aut integration -astro_tmp_pages_* \ No newline at end of file +astro_tmp_pages_* +/test-results/ +/playwright-report/ +/blob-report/ +/playwright/.cache/ diff --git a/package-lock.json b/package-lock.json index 72575c3b..9f79320f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -38,9 +38,11 @@ }, "devDependencies": { "@iconify-json/tabler": "^1.1.87", + "@playwright/test": "^1.40.1", "@tailwindcss/typography": "^0.5.10", "@types/intl-tel-input": "^18.1.1", "@types/jquery": "^3.5.16", + "@types/node": "^20.10.5", "@types/react": "^18.2.14", "@types/react-dom": "^18.2.7", "@vite-pwa/astro": "^0.1.3", @@ -3039,6 +3041,21 @@ "node": ">= 8" } }, + "node_modules/@playwright/test": { + "version": "1.40.1", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.40.1.tgz", + "integrity": "sha512-EaaawMTOeEItCRvfmkI9v6rBkF1svM8wjl/YPRrg2N2Wmp+4qJYkWtJsbew1szfKKDm6fPLy4YAanBhIlf9dWw==", + "dev": true, + "dependencies": { + "playwright": "1.40.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=16" + } + }, "node_modules/@sindresorhus/is": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", @@ -3338,9 +3355,12 @@ } }, "node_modules/@types/node": { - "version": "20.8.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.2.tgz", - "integrity": "sha512-Vvycsc9FQdwhxE3y3DzeIxuEJbWGDsnrxvMADzTDF/lcdR9/K+AQIeAghTQsHtotg/q0j3WEOYS/jQgSdWue3w==" + "version": "20.10.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.5.tgz", + "integrity": "sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw==", + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/@types/normalize-package-data": { "version": "2.4.2", @@ -10666,6 +10686,50 @@ "node": ">=8" } }, + "node_modules/playwright": { + "version": "1.40.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.40.1.tgz", + "integrity": "sha512-2eHI7IioIpQ0bS1Ovg/HszsN/XKNwEG1kbzSDDmADpclKc7CyqkHw7Mg2JCz/bbCxg25QUPcjksoMW7JcIFQmw==", + "dev": true, + "dependencies": { + "playwright-core": "1.40.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=16" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.40.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.40.1.tgz", + "integrity": "sha512-+hkOycxPiV534c4HhpfX6yrlawqVUzITRKwHAmYfmsVreltEl6fAZJ3DPfLMOODw0H3s1Itd6MDCWmP1fl/QvQ==", + "dev": true, + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/playwright/node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/postcss": { "version": "8.4.31", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", @@ -13357,6 +13421,11 @@ "node": ">=12.18" } }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, "node_modules/unherit": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/unherit/-/unherit-3.0.1.tgz", diff --git a/package.json b/package.json index 6aedb71b..fda7bcb1 100644 --- a/package.json +++ b/package.json @@ -40,9 +40,11 @@ }, "devDependencies": { "@iconify-json/tabler": "^1.1.87", + "@playwright/test": "^1.40.1", "@tailwindcss/typography": "^0.5.10", "@types/intl-tel-input": "^18.1.1", "@types/jquery": "^3.5.16", + "@types/node": "^20.10.5", "@types/react": "^18.2.14", "@types/react-dom": "^18.2.7", "@vite-pwa/astro": "^0.1.3", diff --git a/playwright.config.ts b/playwright.config.ts new file mode 100644 index 00000000..e3442126 --- /dev/null +++ b/playwright.config.ts @@ -0,0 +1,77 @@ +import { defineConfig, devices } from '@playwright/test'; + +/** + * Read environment variables from file. + * https://github.com/motdotla/dotenv + */ +// require('dotenv').config(); + +/** + * See https://playwright.dev/docs/test-configuration. + */ +export default defineConfig({ + testDir: './test', + /* Run tests in files in parallel */ + fullyParallel: true, + /* Fail the build on CI if you accidentally left test.only in the source code. */ + forbidOnly: !!process.env.CI, + /* Retry on CI only */ + retries: process.env.CI ? 2 : 0, + /* Opt out of parallel tests on CI. */ + workers: process.env.CI ? 1 : undefined, + /* Reporter to use. See https://playwright.dev/docs/test-reporters */ + reporter: 'html', + /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ + use: { + /* Base URL to use in actions like `await page.goto('/')`. */ + // baseURL: 'http://127.0.0.1:3000', + + /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ + trace: 'on-first-retry', + }, + + /* Configure projects for major browsers */ + projects: [ + { + name: 'chromium', + use: { ...devices['Desktop Chrome'] }, + }, + + { + name: 'firefox', + use: { ...devices['Desktop Firefox'] }, + }, + + { + name: 'webkit', + use: { ...devices['Desktop Safari'] }, + }, + + /* Test against mobile viewports. */ + // { + // name: 'Mobile Chrome', + // use: { ...devices['Pixel 5'] }, + // }, + // { + // name: 'Mobile Safari', + // use: { ...devices['iPhone 12'] }, + // }, + + /* Test against branded browsers. */ + // { + // name: 'Microsoft Edge', + // use: { ...devices['Desktop Edge'], channel: 'msedge' }, + // }, + // { + // name: 'Google Chrome', + // use: { ...devices['Desktop Chrome'], channel: 'chrome' }, + // }, + ], + + /* Run your local dev server before starting the tests */ + // webServer: { + // command: 'npm run start', + // url: 'http://127.0.0.1:3000', + // reuseExistingServer: !process.env.CI, + // }, +}); diff --git a/test/testCheckProfile.spec.js b/test/testCheckProfile.spec.js new file mode 100644 index 00000000..9e4da49f --- /dev/null +++ b/test/testCheckProfile.spec.js @@ -0,0 +1,17 @@ +import { test, expect } from '@playwright/test'; + +test('test', async ({ page }) => { + await page.goto('https://todoservis.com/'); + await page.getByRole('button', { name: 'Iniciar Sesión' }).click(); + await page.getByPlaceholder('Correo Electrónico').click(); + await page.getByPlaceholder('Correo Electrónico').fill('germanzarkovich@gmail.com'); + await page.getByPlaceholder('Correo Electrónico').press('Tab'); + await page.getByPlaceholder('Contraseña').fill('Asdfg12345!'); + await page.getByRole('button', { name: 'Acceso' }).click(); + await page.getByLabel('Navegación').click(); + await page.getByRole('link', { name: 'Mi Cuenta de proveedor' }).click + await page.getByText('german', { exact: true }) + await page.getByText('zarko', { exact: true }) +}); + + diff --git a/test/testCreateAPostAsProvider.spec.js b/test/testCreateAPostAsProvider.spec.js new file mode 100644 index 00000000..75ec3966 --- /dev/null +++ b/test/testCreateAPostAsProvider.spec.js @@ -0,0 +1,26 @@ +import { test, expect } from '@playwright/test'; + +test('test create post and delete it as a provider ', async ({ page }) => { + await page.goto('https://todoservis.com/'); + await page.getByRole('button', { name: 'Iniciar Sesión' }).click(); + await page.goto('https://todoservis.com/login') + await page.getByPlaceholder('Correo Electrónico').click(); + await page.getByPlaceholder('Correo Electrónico').fill(`${process.env.USER}@gmail.com`); + await page.getByPlaceholder('Contraseña').click(); + await page.getByPlaceholder('Contraseña').fill('Asdfg12345!'); + await page.getByRole('button', { name: 'Acceso' }).click(); + + await page.goto('https://todoservis.com/posts/createpost'); + await page.getByLabel('Título:fix computers') + await page.getByLabel('Categoría de Servicio:4') + await page.frameLocator('iframe[title="Rich Text Area"]').getByLabel('fix computers') + await page.getByLabel('País:1') + await page.getByLabel('Provincia:3') + await page.getByLabel('Cantón:18') + await page.getByLabel('Distrito:343') + await page.getByRole('button', { name: 'Publicar' }).click + await page.goto('https://todoservis.com/provider/profile') + await page.getByRole('link', { name: 'Guanacaste/Liberia/Mayorga' }) + await page.getByLabel('Borrar').click + await page.goto('https://todoservis.com/provider/profile') +}); \ No newline at end of file diff --git a/test/testLogin.spec.js b/test/testLogin.spec.js new file mode 100644 index 00000000..4320e8dd --- /dev/null +++ b/test/testLogin.spec.js @@ -0,0 +1,13 @@ +import { test, expect } from '@playwright/test'; + +test('test login as a user ', async ({ page }) => { + await page.goto('https://todoservis.com/'); + await page.getByRole('button', { name: 'Iniciar Sesión' }).click(); + await page.getByPlaceholder('Correo Electrónico').click(); + await page.getByPlaceholder('Correo Electrónico').fill(`${process.env.USER}@gmail.com`); + await page.getByPlaceholder('Contraseña').click(); + await page.getByPlaceholder('Contraseña').fill('Asdfg12345!'); + await page.getByPlaceholder('Contraseña').press('Tab'); + await page.getByRole('button', { name: 'Acceso' }).click(); + await page.getByRole('heading', { name: 'Servicios' }).click(); +}); \ No newline at end of file From 845036a87dba78723ef07ed3e3565dd91c93c824 Mon Sep 17 00:00:00 2001 From: r-southworth Date: Wed, 17 Jan 2024 11:59:00 -0500 Subject: [PATCH 07/14] update messages regarding sign up links and not registered email --- src/i18n/UI/English.ts | 5 +++-- src/i18n/UI/French.ts | 5 +++-- src/i18n/UI/Spanish.ts | 5 +++-- src/i18n/uiType.ts | 1 + src/lib/Auth.tsx | 11 +++++++++-- 5 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/i18n/UI/English.ts b/src/i18n/UI/English.ts index 96280dcc..d6072119 100644 --- a/src/i18n/UI/English.ts +++ b/src/i18n/UI/English.ts @@ -91,8 +91,8 @@ export const English = { error404: 'Something went wrong', onlyProvider: "Only providers can create posts.", signInAsProvider: "Please sign in to a provider account before posting.", - checkEmail: "Check your email for the reset link!", - checkConfirmEmail: 'If this email is not already registered, you will receive an email confirmation link.', + checkEmail: "Check your email for the reset link! If you did not receive the email, please check your spam folder. Links are valid for 24 hours.", + checkConfirmEmail: 'If this email is not already registered, you will receive an email confirmation link. Please check your spam folder if you did not receive the email. Links are valid for 24 hours.', signIn: "Please sign in to access this page.", createProviderAccount: "Please sign in to create a provider profile.", createClientAccount: "Please sign in to create a client profile.", @@ -203,6 +203,7 @@ export const English = { clientCreateProfileError: "Error creating client profile", clientEditProfileError: "Error updating client profile", createUserError: "Error creating user, please try again or contact us for assistance.", + emailNotConfirmed: "Email not registered. If you previously registered this email address please use the forgot password option below, otherwise please use the sign up option below.", }, socialModal: { diff --git a/src/i18n/UI/French.ts b/src/i18n/UI/French.ts index 3afd6876..106d98e6 100644 --- a/src/i18n/UI/French.ts +++ b/src/i18n/UI/French.ts @@ -91,8 +91,8 @@ export const French = { error404: "Une erreur est survenue", onlyProvider: 'Seuls les fournisseurs peuvent créer des publications.', signInAsProvider: "Veuillez vous connecter à un compte de fournisseur avant de publier.", - checkEmail: "Vérifiez votre e-mail pour le lien de réinitialisation !", - checkConfirmEmail: "Si cet e-mail n'est pas déjà enregistré, vous recevrez un lien de confirmation par e-mail.", + checkEmail: "Vérifiez votre courrier électronique pour le lien de réinitialisation ! Si vous n'avez pas reçu l'e-mail, veuillez vérifier votre dossier spam. Les liens sont valables 24 heures.", + checkConfirmEmail: "Si cet email n'est pas déjà enregistré, vous recevrez un lien de confirmation par email. Veuillez vérifier votre dossier spam si vous n'avez pas reçu l'e-mail. Les liens sont valables 24 heures.", signIn: "Veuillez vous connecter pour accéder à cette page.", createProviderAccount: "Veuillez vous connecter pour créer un profil de fournisseur.", createClientAccount: "Veuillez vous connecter pour créer un profil client.", @@ -203,6 +203,7 @@ export const French = { clientEditProfileError: "Erreur lors de la mise à jour du profil client", noClient: "Aucun client trouvé.", createUserError: "Erreur lors de la création de l'utilisateur, veuillez réessayer ou contactez-nous pour obtenir de l'aide.", + emailNotConfirmed: "Correo electrónico no registrado. Si registró previamente esta dirección de correo electrónico, utilice la opción de olvidé mi contraseña que aparece a continuación; de lo contrario, utilice la opción de registro que aparece a continuación.", }, socialModal: { diff --git a/src/i18n/UI/Spanish.ts b/src/i18n/UI/Spanish.ts index 461f9ef2..8c8ba414 100644 --- a/src/i18n/UI/Spanish.ts +++ b/src/i18n/UI/Spanish.ts @@ -90,8 +90,8 @@ export const Spanish = { error404: 'Algo salió mal', onlyProvider: 'Solo los proveedores pueden crear publicaciones.', signInAsProvider: 'Inicie sesión en una cuenta de proveedor para poder publicar.', - checkEmail: "¡Revise su correo electrónico para ver el enlace de reinicio!", - checkConfirmEmail: 'Si este correo electrónico aún no está registrado, recibirá un enlace de confirmación por correo electrónico.', + checkEmail: "¡Revise su correo electrónico para ver el enlace de reinicio! Si no recibió el correo electrónico, revise su carpeta de correo no deseado. Los enlaces son válidos por 24 horas.", + checkConfirmEmail: 'Si este correo electrónico aún no está registrado, recibirá un enlace de confirmación por correo electrónico. Por favor revise su carpeta de spam si no recibió el correo electrónico. Los enlaces son válidos durante 24 horas.', signIn: "Inicie sesión para acceder a esta página", createProviderAccount: "Inicie sesión para crear un perfil de proveedor", createClientAccount: "Inicie sesión para crear un perfil de cliente", @@ -202,6 +202,7 @@ export const Spanish = { clientCreateProfileError: "Error al crear el perfil del cliente", clientEditProfileError: "Error al actualizar el perfil del cliente", createUserError: "Error al crear usuario, inténtelo nuevamente o contáctenos para obtener ayuda.", + emailNotConfirmed: "Correo electrónico no registrado. Si registró previamente esta dirección de correo electrónico, utilice la opción de olvidé mi contraseña que aparece a continuación; de lo contrario, utilice la opción de registro que aparece a continuación.", }, socialModal: { diff --git a/src/i18n/uiType.ts b/src/i18n/uiType.ts index e7ae4795..8345e8e2 100644 --- a/src/i18n/uiType.ts +++ b/src/i18n/uiType.ts @@ -203,6 +203,7 @@ export interface uiObject { clientCreateProfileError: string, clientEditProfileError: string, createUserError: string, + emailNotConfirmed: string, }, socialModal: { diff --git a/src/lib/Auth.tsx b/src/lib/Auth.tsx index 304c550b..c7d3d0ba 100644 --- a/src/lib/Auth.tsx +++ b/src/lib/Auth.tsx @@ -1,4 +1,5 @@ -import { Component, createSignal } from "solid-js"; +import type { Component } from "solid-js"; +import { createSignal } from "solid-js"; import { supabase } from "./supabaseClient"; import { currentSession } from "./userSessionStore"; import { getLangFromUrl, useTranslations } from "../i18n/utils"; @@ -40,7 +41,13 @@ export const Auth: Component = (props) => { location.href = `/${lang}/services`; } catch (error) { if (error instanceof Error) { - alert(error.message); + switch (error.message) { + case "Email not confirmed": + alert(t("apiErrors.emailNotConfirmed")); + break; + default: + alert(error.message); + } } } finally { setLoading(false); From 3cc78e0312140df35e5bb95db91ef390975290b7 Mon Sep 17 00:00:00 2001 From: r-southworth <105446541+r-southworth@users.noreply.github.com> Date: Mon, 22 Jan 2024 11:17:36 -0500 Subject: [PATCH 08/14] Update ci.yaml --- .github/workflows/ci.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index fb7fbdb9..77fc7fe7 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -11,7 +11,7 @@ jobs: steps: - uses: actions/checkout@v3 - - uses: supabase/setup-cli@v1 + - uses: supabase/setup-cli@v1.123.4 with: version: latest @@ -25,4 +25,4 @@ jobs: echo "Detected uncommitted changes after build. See status below:" git diff exit 1 - fi \ No newline at end of file + fi From d4eade52f8e934d937aa6aa0c8b75f7c879374e7 Mon Sep 17 00:00:00 2001 From: r-southworth Date: Mon, 22 Jan 2024 11:21:27 -0500 Subject: [PATCH 09/14] try changing version of supbase cli in CI action --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index fb7fbdb9..96bb103c 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -11,7 +11,7 @@ jobs: steps: - uses: actions/checkout@v3 - - uses: supabase/setup-cli@v1 + - uses: supabase/setup-cli@v1.123.4 with: version: latest From 955d48bedd6dcc2b562e96e7167e1d8b6fa3378f Mon Sep 17 00:00:00 2001 From: r-southworth Date: Mon, 22 Jan 2024 11:24:03 -0500 Subject: [PATCH 10/14] actually change version of supbase cli --- .github/workflows/ci.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 96bb103c..2a3141a2 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -11,9 +11,9 @@ jobs: steps: - uses: actions/checkout@v3 - - uses: supabase/setup-cli@v1.123.4 + - uses: supabase/setup-cli@v1 with: - version: latest + version: 1.123.4 - name: Start Supabase local development setup run: supabase start From dbd17f3f6be554a646640a1e4783246b63e3e674 Mon Sep 17 00:00:00 2001 From: r-southworth Date: Mon, 22 Jan 2024 11:26:53 -0500 Subject: [PATCH 11/14] try another version of supabase CLI --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 2a3141a2..65e96d30 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -13,7 +13,7 @@ jobs: - uses: supabase/setup-cli@v1 with: - version: 1.123.4 + version: 1.123.0 - name: Start Supabase local development setup run: supabase start From bc6649f73bae24ff0674155b706f8f12f3f4bdf6 Mon Sep 17 00:00:00 2001 From: r-southworth Date: Mon, 22 Jan 2024 12:30:14 -0500 Subject: [PATCH 12/14] another version of supabase cli --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 65e96d30..ef5f906e 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -13,7 +13,7 @@ jobs: - uses: supabase/setup-cli@v1 with: - version: 1.123.0 + version: 1.106.1 - name: Start Supabase local development setup run: supabase start From e77ca429bfefc2be8a873535a2994c63435f44f2 Mon Sep 17 00:00:00 2001 From: r-southworth Date: Mon, 22 Jan 2024 12:58:32 -0500 Subject: [PATCH 13/14] minor grammer updates --- src/i18n/UI/English.ts | 28 ++++++++++++------------ src/i18n/UI/French.ts | 28 ++++++++++++------------ src/i18n/UI/Spanish.ts | 48 +++++++++++++++++++++--------------------- 3 files changed, 52 insertions(+), 52 deletions(-) diff --git a/src/i18n/UI/English.ts b/src/i18n/UI/English.ts index d6072119..7649d922 100644 --- a/src/i18n/UI/English.ts +++ b/src/i18n/UI/English.ts @@ -31,24 +31,24 @@ export const English = { pageDescriptions: { services: "Find the services you need to get the job done. Search for keywords, filter by category, and filter by location to find what you need. View post previews and click on a post to learn more.", - signUp: "Provider your email and create a password to signup to search services or post services on Todo Servis.", - login: "Enter your email and password to login to Todo Servis.", - home: 'Todo Servis, home to everything you need to get the job done.', + signUp: "Provider your email and create a password to signup to search services or post services on TodoServis.", + login: "Enter your email and password to login to TodoServis.", + home: 'TodoServis, home to everything you need to get the job done.', // signIn: string, - createClientAccount: "Join Todo Servis as a client and unlock a world of services. Sign up today to find and connect with top service providers in your area.", - viewClientAccount: "Access and manage your client account information effortlessly on Todo Servis.", - createPost: 'Create a post including title, category, description, location, and images to offer your service on Todo Servis.', - createProviderAccount: 'Create a Provider Account to start posting your services on Todo Servis.', - viewProviderAccount: 'Manage your provider account details and review your posts on Todo Servis.', + createClientAccount: "Join TodoServis as a client and unlock a world of services. Sign up today to find and connect with top service providers in your area.", + viewClientAccount: "Access and manage your client account information effortlessly on TodoServis.", + createPost: 'Create a post including title, category, description, location, and images to offer your service on TodoServis.', + createProviderAccount: 'Create a Provider Account to start posting your services on TodoServis.', + viewProviderAccount: 'Manage your provider account details and review your posts on TodoServis.', clientViewProviderAccount: "Discover more about this provider. Explore their profile and available services.", page404: '404 - page not found', - requestPasswordReset: "Forgot your password? Request a secure password reset for your Todo Servis account. Enter your email and follow the instructions to regain access.", - resetPassword: "Reset your password securely with Todo Servis. Follow the link from your email to choose a new password.", + requestPasswordReset: "Forgot your password? Request a secure password reset for your TodoServis account. Enter your email and follow the instructions to regain access.", + resetPassword: "Reset your password securely with TodoServis. Follow the link from your email to choose a new password.", terms: "Review our Terms and Conditions. Please note, the translations are provided as a courtesy, the official binding terms are in Spanish.", privacy: "Review our privacy policy. Please note, the translations are provided as a courtesy, the official binding policy is in Spanish.", acceptableUse: "Review our acceptable use policy. Please note, the translations are provided as a courtesy, the official binding policy is in Spanish.", - about: "Discover the story behind Todo Servis – who we are, our mission, and our passion for helping revolutionize the way individuals and businesses find and provide services. Learn about our team and the values that drive us. Join us on our journey!", - impact: "Explore the meaningful impact of Todo Servis. Discover how we're making a difference and learn more about our projects, and contributions to positive change.", + about: "Discover the story behind TodoServis – who we are, our mission, and our passion for helping revolutionize the way individuals and businesses find and provide services. Learn about our team and the values that drive us. Join us on our journey!", + impact: "Explore the meaningful impact of TodoServis. Discover how we're making a difference and learn more about our projects, and contributions to positive change.", fullPost: "Read more about this service and contact the provider if interested. Explore additional images and the full description of the service.", }, @@ -221,8 +221,8 @@ export const English = { }, ariaLabels: { - todo: 'Todo Servis Logo Return to Homepage', - logo: 'Todo Servis Logo', + todo: 'TodoServis Logo Return to Homepage', + logo: 'TodoServis Logo', navigation: 'Navigation', checkboxMajorMunicipality: "Checkbox for selecting major municipality", checkboxMinorMunicipality: "Checkbox for selecting minor municipality", diff --git a/src/i18n/UI/French.ts b/src/i18n/UI/French.ts index 106d98e6..b7f65983 100644 --- a/src/i18n/UI/French.ts +++ b/src/i18n/UI/French.ts @@ -31,24 +31,24 @@ export const French = { pageDescriptions: { services: "Trouvez les services dont vous avez besoin pour accomplir votre travail. Recherchez des mots-clés, filtrez par catégorie et filtrez par emplacement pour trouver ce dont vous avez besoin. Affichez les aperçus des articles et cliquez sur un article pour en savoir plus.", - signUp: "Fournissez votre e-mail et créez un mot de passe pour vous inscrire pour rechercher des services ou publier des services sur Todo Servis.", - login: "Entrez votre email et votre mot de passe pour vous connecter à Todo Servis.", - home: "Todo Servis, où vous trouverez tout ce dont vous avez besoin pour accomplir votre travail. ", + signUp: "Fournissez votre e-mail et créez un mot de passe pour vous inscrire pour rechercher des services ou publier des services sur TodoServis.", + login: "Entrez votre email et votre mot de passe pour vous connecter à TodoServis.", + home: "TodoServis, où vous trouverez tout ce dont vous avez besoin pour accomplir votre travail. ", // signIn: string, - createClientAccount: "Rejoignez Todo Servis en tant que client et débloquez un monde de services. Inscrivez-vous aujourd'hui pour trouver et entrer en contact avec les meilleurs fournisseurs de services de votre région.", - viewClientAccount: "Accédez et gérez les informations de votre compte client sans effort sur Todo Servis.", - createPost: "Créez une publication comprenant un titre, une catégorie, une description, un emplacement et des images pour proposer votre service sur Todo Servis.", - createProviderAccount: "Créez un compte fournisseur pour commencer à publier vos services sur Todo Servis", - viewProviderAccount: "Gérez les détails de votre compte fournisseur et consultez vos publications sur Todo Servis.", + createClientAccount: "Rejoignez TodoServis en tant que client et débloquez un monde de services. Inscrivez-vous aujourd'hui pour trouver et entrer en contact avec les meilleurs fournisseurs de services de votre région.", + viewClientAccount: "Accédez et gérez les informations de votre compte client sans effort sur TodoServis.", + createPost: "Créez une publication comprenant un titre, une catégorie, une description, un emplacement et des images pour proposer votre service sur TodoServis.", + createProviderAccount: "Créez un compte fournisseur pour commencer à publier vos services sur TodoServis", + viewProviderAccount: "Gérez les détails de votre compte fournisseur et consultez vos publications sur TodoServis.", clientViewProviderAccount: "Découvrez-en davantage sur ce fournisseur. Explorez leur profil et les services disponibles.", page404: "404 Page non trouvée", - requestPasswordReset: "Mot de passe oublié? Demandez une réinitialisation sécurisée du mot de passe pour votre compte Todo Servis. Entrez votre email et suivez les instructions pour retrouver l'accès.", - resetPassword: "Réinitialisez votre mot de passe en toute sécurité avec Todo Servis. Suivez le lien de votre e-mail pour choisir un nouveau mot de passe.", + requestPasswordReset: "Mot de passe oublié? Demandez une réinitialisation sécurisée du mot de passe pour votre compte TodoServis. Entrez votre email et suivez les instructions pour retrouver l'accès.", + resetPassword: "Réinitialisez votre mot de passe en toute sécurité avec TodoServis. Suivez le lien de votre e-mail pour choisir un nouveau mot de passe.", terms: "Consultez nos termes et conditions. Remarque : les traductions sont fournies à titre gracieux, les termes officiels contraignants sont en espagnol.", privacy: "Consultez notre politique de confidentialité. Veuillez noter que les traductions sont fournies à titre gracieux, la politique officielle contraignante est en espagnol.", acceptableUse: "Consultez notre politique d’utilisation acceptable. Veuillez noter que les traductions sont fournies à titre gracieux et que la politique officielle contraignante est en espagnol.", - about: "Découvrez l'histoire de Todo Servis – qui nous sommes, notre mission et notre passion de contribuer à révolutionner la façon dont les particuliers et les entreprises trouvent et fournissent des services. Découvrez notre équipe et les valeurs qui nous animent. Rejoignez-nous dans notre voyage !", - impact: "Découvrez l’impact significatif de Todo Servis. Découvrez comment nous faisons la différence et apprenez-en davantage sur nos projets et nos contributions à un changement positif.", + about: "Découvrez l'histoire de TodoServis – qui nous sommes, notre mission et notre passion de contribuer à révolutionner la façon dont les particuliers et les entreprises trouvent et fournissent des services. Découvrez notre équipe et les valeurs qui nous animent. Rejoignez-nous dans notre voyage !", + impact: "Découvrez l’impact significatif de TodoServis. Découvrez comment nous faisons la différence et apprenez-en davantage sur nos projets et nos contributions à un changement positif.", fullPost: "En savoir plus sur ce service et contacter le fournisseur si vous êtes intéressé. Découvrez des images supplémentaires et la description complète du service.", }, @@ -221,8 +221,8 @@ export const French = { }, ariaLabels: { - todo: "Todo Servis Logo Retour à la page d'accueil", - logo: "Logo Todo Servis", + todo: "TodoServis Logo Retour à la page d'accueil", + logo: "Logo TodoServis", navigation: "La navigation", checkboxMajorMunicipality: "Case à cocher pour sélectionner la grande municipalité", checkboxMinorMunicipality: "Case à cocher pour sélectionner une commune mineure", diff --git a/src/i18n/UI/Spanish.ts b/src/i18n/UI/Spanish.ts index 8c8ba414..7d781dcc 100644 --- a/src/i18n/UI/Spanish.ts +++ b/src/i18n/UI/Spanish.ts @@ -22,32 +22,32 @@ export const Spanish = { terms: 'Términos y Condiciones', privacy: "Política de Privacidad", acceptableUse: "Política de uso aceptable", - about: 'Sobre nosotras', + about: 'Sobre nosotros', impact: 'Impacto', fullPost: "Ver publicación completa", - offline: 'Desconectada', + offline: 'Desconectado', }, pageDescriptions: { services: "Encuentre los servicios que necesita para realizar el trabajo. Busque palabras clave, filtre por categoría y filtre por ubicación para encontrar lo que necesita. Vea vistas previas de publicaciones y haga clic en una publicación para obtener más información.", - signUp: "Proporcione su correo electrónico y cree una contraseña para registrarse para buscar servicios o publicar servicios en Todo Servis.", - login: "Ingrese su correo electrónico y contraseña para iniciar sesión en Todo Servis.", - home: 'Todo Servis, el hogar de todo lo que necesita para realizar el trabajo.', + signUp: "Proporcione su correo electrónico y cree una contraseña para registrarse para buscar servicios o publicar servicios en TodoServis.", + login: "Ingrese su correo electrónico y contraseña para iniciar sesión en TodoServis.", + home: 'TodoServis, el hogar de todo lo que necesita para realizar el trabajo.', // signIn: string, - createClientAccount: "Únete a Todo Servis como cliente y desbloquea un mundo de servicios. Regístrese hoy para encontrar y conectarse con los principales proveedores de servicios en su área.", - viewClientAccount: "Acceda y administre la información de su cuenta de cliente sin esfuerzo en Todo Servis.", - createPost: 'Crea una publicación incluyendo título, categoría, descripción e imágenes para ofrecer tu servicio en Todo Servis.', - createProviderAccount: 'Cree una cuenta de proveedor para comenzar a publicar sus servicios en Todo Servis', - viewProviderAccount: "Administre los detalles de su cuenta de proveedor y revise sus publicaciones en Todo Servis.", + createClientAccount: "Únete a TodoServis como cliente y desbloquea un mundo de servicios. Regístrese hoy para encontrar y conectarse con los principales proveedores de servicios en su área.", + viewClientAccount: "Acceda y administre la información de su cuenta de cliente sin esfuerzo en TodoServis.", + createPost: 'Crea una publicación incluyendo título, categoría, descripción e imágenes para ofrecer sus servicios en TodoServis.', + createProviderAccount: 'Cree una cuenta de proveedor para comenzar a publicar sus servicios en TodoServis', + viewProviderAccount: "Administre los detalles de su cuenta de proveedor y revise sus publicaciones en TodoServis.", clientViewProviderAccount: "Descubra más sobre este proveedor. Explore su perfil y los servicios disponibles.", page404: '404 Pagina no encontrada', - requestPasswordReset: "¿Olvidaste tu contraseña? Solicite un restablecimiento seguro de contraseña para su cuenta Todo Servis. Introduce tu correo electrónico y sigue las instrucciones para recuperar el acceso.", - resetPassword: "Restablece tu contraseña de forma segura con Todo Servis. Siga el enlace de su correo electrónico para elegir una nueva contraseña.", + requestPasswordReset: "¿Olvidaste tu contraseña? Solicite un restablecimiento seguro de contraseña para su cuenta TodoServis. Introduce tu correo electrónico y sigue las instrucciones para recuperar el acceso.", + resetPassword: "Restablezca su contraseña de forma segura en TodoServis. Siga el enlace de su correo electrónico para elegir una nueva contraseña.", terms: "Revisa nuestros términos y condiciones. Tenga en cuenta que las traducciones se proporcionan como cortesía; los términos oficiales vinculantes están en español.", privacy: "Revise nuestra política de privacidad. Tenga en cuenta que las traducciones se proporcionan como cortesía, la política oficial vinculante está en español.", acceptableUse: "Revise nuestra política de uso aceptable. Tenga en cuenta que las traducciones se proporcionan como cortesía, la política oficial vinculante está en español.", - about: "Descubra la historia detrás de Todo Servis: quiénes somos, nuestra misión y nuestra pasión por ayudar a revolucionar la forma en que las personas y las empresas encuentran y brindan servicios. Conozca nuestro equipo y los valores que nos impulsan. ¡Únase a nosotros en nuestro viaje!", - impact: "Explore el impacto significativo de Todo Servis. Descubra cómo estamos marcando la diferencia y obtenga más información sobre nuestros proyectos y nuestras contribuciones al cambio positivo.", + about: "Descubra la historia detrás de TodoServis: quiénes somos, nuestra misión y nuestra pasión por ayudar a revolucionar la forma en que las personas y las empresas encuentran y brindan servicios. Conozca nuestro equipo y los valores que nos impulsan. ¡Únase a nosotros en nuestro viaje!", + impact: "Explore el impacto significativo de TodoServis. Descubra cómo estamos marcando la diferencia y obtenga más información sobre nuestros proyectos y nuestras contribuciones al cambio positivo.", fullPost: "Lea más sobre este servicio y comuníquese con el proveedor si está interesado. Explora imágenes adicionales y la descripción completa del servicio.", }, @@ -59,13 +59,13 @@ export const Spanish = { uploading: 'Cargando ...', loading: 'Cargando...', login: 'Acceso', - signUp: 'inscribirse', + signUp: 'registrarte', signIn: 'Iniciar Sesión', - signOut: 'Desconectar', + signOut: 'Cerrar Sesión', returnHome: 'Página de Inicio', - reset: 'Reiniciar', + reset: 'Restablecerla', post: 'Publicar', - next: 'Próxima', + next: 'Siguiente', previous: 'Previa', delete: 'Borrar', contact: 'Correo Electrónico', @@ -107,7 +107,7 @@ export const Spanish = { clickWrap2: 'estás indicando que has leído y estás de acuerdo con los', fetch: 'Obtener Servicios', todoFetch: '¡Todo, el perro de servicio, te traerá los servicios que necesitas!', - mustSignIn: 'Debe iniciar sesión para ver los servicios disponibles.', + mustSignIn: 'Debes iniciar sesión para ver los servicios disponibles.', profileEdits: '¡Las ediciones del perfil solo se guardarán después de hacer clic en el botón Guardar perfil!', noClient: "No se encontró ningún cliente.", noPostsSearch: "Ninguna publicación coincide con esta búsqueda específica - pruebe con un filtro o palabra clave diferente", @@ -115,8 +115,8 @@ export const Spanish = { formLabels: { title: 'Título', - serviceCategory: 'Categoría de Servicio', - postContent: 'Publicar Contenido', + serviceCategory: 'Categoría del Servicio', + postContent: 'Descripción', country: 'País', majorMunicipality: 'Provincia', minorMunicipality: 'Cantón', @@ -220,14 +220,14 @@ export const Spanish = { }, ariaLabels: { - todo: 'Logotipo de Todo Servis Volver a la página de inicio', - logo: 'Logotipo de Todo Servis', + todo: 'Logotipo de TodoServis Volver a la página de inicio', + logo: 'Logotipo de TodoServis', navigation: 'Navegación', checkboxMajorMunicipality: "Casilla de verificación para seleccionar Provincia", checkboxMinorMunicipality: "Casilla de verificación para seleccionar Cantón", checkboxGoverningDistrict: "Casilla de verificación para seleccionar Distrito", darkMessage: "Cambia entre modo claro y modo oscuro", - closeDialog: "Cerrar Dialogo", + closeDialog: "Cerrar Diálogo", }, headerData: { From d014e9b8fcf7fce84e51462761aeea9622d7bddd Mon Sep 17 00:00:00 2001 From: r-southworth Date: Mon, 22 Jan 2024 13:00:57 -0500 Subject: [PATCH 14/14] npm install --- package-lock.json | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index 95c4767c..317c3bec 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3253,7 +3253,6 @@ } }, "node_modules/@types/node": { - "version": "20.10.5", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.5.tgz", "integrity": "sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw==", @@ -3261,6 +3260,15 @@ "undici-types": "~5.26.4" } }, + "node_modules/@types/node-forge": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", + "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/normalize-package-data": { "version": "2.4.4", "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz",