[HR Import] Error states + reconnect prompt on the HR card#91839
Draft
roryabraham wants to merge 4 commits into
Draft
[HR Import] Error states + reconnect prompt on the HR card#91839roryabraham wants to merge 4 commits into
roryabraham wants to merge 4 commits into
Conversation
Expose hasAuthenticationError on Merge HR cards via lastSync.isAuthenticationError and suppress the generic sync error when credentials are invalid. Co-authored-by: Cursor <cursoragent@cursor.com>
Add workspace.hr.authenticationError and reconnect strings for all locales. Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Contributor
Author
|
Uploading A-auth-error-banner.png |
Contributor
Author
|
Uploading B-reconnect-click.png |
Contributor
Author
|
Uploading C-healthy-last-sync.png |
Contributor
Author
|
Uploading D-generic-sync-error.png |
Contributor
Author
|
Uploading E-multi-hr-blocked.png |
Contributor
Author
|
Uploading F-offline.png |
Contributor
Author
Playwright QA screenshots (macOS Chrome)A-auth-error-banner.pngB-reconnect-click.pngC-healthy-last-sync.pngD-generic-sync-error.pngE-multi-hr-blocked.pngF-offline.png |
Contributor
🦜 Polyglot Parrot! 🦜Squawk! Looks like you added some shiny new English strings. Allow me to parrot them back to you in other tongues: View the translation diffdiff --git a/src/languages/de.ts b/src/languages/de.ts
index 7bfa5d793c9..2d284ebb66d 100644
--- a/src/languages/de.ts
+++ b/src/languages/de.ts
@@ -7222,7 +7222,7 @@ Fügen Sie weitere Ausgabelimits hinzu, um den Cashflow Ihres Unternehmens zu sc
alreadyConnectedPrompt: 'Sie müssen Ihre aktuelle HR-Plattform trennen, bevor Sie eine andere verbinden.',
lastSync: (relativeDate: string) => `Zuletzt synchronisiert ${relativeDate}`,
syncError: (providerName: string) => `Verbindung zu ${providerName} nicht möglich`,
- authenticationError: (providerName: string) => `Verbindung zu ${providerName} aufgrund falscher Anmeldedaten nicht möglich.`,
+ authenticationError: (providerName: string) => `Verbindung zu ${providerName} aufgrund falscher Zugangsdaten nicht möglich.`,
reconnect: 'Erneut verbinden',
connectionDescription: (providerName: string) => `Verbinden Sie ${providerName}, um Mitarbeitergenehmigungen mit Ihrem Workspace zu synchronisieren.`,
approvalMode: 'Genehmigungsmodus',
diff --git a/src/languages/es.ts b/src/languages/es.ts
index 9091cedf797..0288219bda0 100644
--- a/src/languages/es.ts
+++ b/src/languages/es.ts
@@ -6321,7 +6321,7 @@ ${amount} para ${merchant} - ${date}`,
alreadyConnectedPrompt: 'Debes desconectar tu plataforma de RR. HH. actual antes de conectar otra.',
lastSync: (relativeDate: string) => `Última sincronización ${relativeDate}`,
syncError: (providerName: string) => `No se puede conectar con ${providerName}`,
- authenticationError: (providerName: string) => `No se pudo conectar con ${providerName} debido a credenciales incorrectas.`,
+ authenticationError: (providerName: string) => `No se pudo conectar a ${providerName} debido a credenciales incorrectas.`,
reconnect: 'Volver a conectar',
connectionDescription: (providerName: string) => `Conecta ${providerName} para mantener sincronizadas las aprobaciones de empleados con tu espacio de trabajo.`,
approvalMode: 'Modo de aprobación',
diff --git a/src/languages/fr.ts b/src/languages/fr.ts
index 1052825c1f5..fde5e02ebcd 100644
--- a/src/languages/fr.ts
+++ b/src/languages/fr.ts
@@ -7247,7 +7247,7 @@ Ajoutez davantage de règles de dépenses pour protéger la trésorerie de l’e
lastSync: (relativeDate: string) => `Dernière synchronisation ${relativeDate}`,
syncError: (providerName: string) => `Impossible de se connecter à ${providerName}`,
authenticationError: (providerName: string) => `Impossible de se connecter à ${providerName} en raison d’identifiants incorrects.`,
- reconnect: 'Reconnecter',
+ reconnect: 'Reconnect',
connectionDescription: (providerName: string) => `Connectez ${providerName} pour synchroniser les approbations des employés avec votre espace de travail.`,
approvalMode: "Mode d'approbation",
providerApprovalMode: (providerName: string) => `Mode d'approbation ${providerName}`,
diff --git a/src/languages/it.ts b/src/languages/it.ts
index 80284c84133..0be3184e39d 100644
--- a/src/languages/it.ts
+++ b/src/languages/it.ts
@@ -7207,7 +7207,7 @@ Aggiungi altre regole di spesa per proteggere il flusso di cassa aziendale.`,
alreadyConnectedPrompt: 'Devi disconnettere la tua attuale piattaforma HR prima di collegarne un’altra.',
lastSync: (relativeDate: string) => `Ultima sincronizzazione ${relativeDate}`,
syncError: (providerName: string) => `Impossibile connettersi a ${providerName}`,
- authenticationError: (providerName: string) => `Impossibile connettersi a ${providerName} a causa di credenziali errate.`,
+ authenticationError: (providerName: string) => `Impossibile connettersi a ${providerName} a causa di credenziali non corrette.`,
reconnect: 'Riconnetti',
connectionDescription: (providerName: string) => `Collega ${providerName} per mantenere sincronizzate le approvazioni dei dipendenti con il tuo spazio di lavoro.`,
approvalMode: 'Modalità di approvazione',
diff --git a/src/languages/ja.ts b/src/languages/ja.ts
index 19568d28861..502af2ee832 100644
--- a/src/languages/ja.ts
+++ b/src/languages/ja.ts
@@ -7125,7 +7125,7 @@ ${reportName}
alreadyConnectedPrompt: '別の人事プラットフォームに接続する前に、現在の人事プラットフォームとの接続を解除する必要があります。',
lastSync: (relativeDate: string) => `最終同期: ${relativeDate}`,
syncError: (providerName: string) => `${providerName}に接続できません`,
- authenticationError: (providerName: string) => `認証情報が正しくないため、${providerName}に接続できませんでした。`,
+ authenticationError: (providerName: string) => `認証情報が正しくないため、${providerName} に接続できませんでした。`,
reconnect: '再接続',
connectionDescription: (providerName: string) => `${providerName}を接続して、従業員の承認をワークスペースと同期させましょう。`,
approvalMode: '承認モード',
diff --git a/src/languages/nl.ts b/src/languages/nl.ts
index 762e3ecd766..15737db549c 100644
--- a/src/languages/nl.ts
+++ b/src/languages/nl.ts
@@ -7181,7 +7181,7 @@ er bestedingsregels toe om de kasstroom van het bedrijf te beschermen.`,
alreadyConnectedPrompt: 'Je moet je huidige HR-platform loskoppelen voordat je een ander kunt verbinden.',
lastSync: (relativeDate: string) => `Laatst gesynchroniseerd ${relativeDate}`,
syncError: (providerName: string) => `Kan geen verbinding maken met ${providerName}`,
- authenticationError: (providerName: string) => `Kan geen verbinding maken met ${providerName} vanwege onjuiste inloggegevens.`,
+ authenticationError: (providerName: string) => `Kon geen verbinding maken met ${providerName} vanwege onjuiste inloggegevens.`,
reconnect: 'Opnieuw verbinden',
connectionDescription: (providerName: string) => `Verbind ${providerName} om goedkeuringen van werknemers gesynchroniseerd te houden met je werkruimte.`,
approvalMode: 'Goedkeuringsmodus',
diff --git a/src/languages/pl.ts b/src/languages/pl.ts
index 377b6e86a03..b43930a52b5 100644
--- a/src/languages/pl.ts
+++ b/src/languages/pl.ts
@@ -7174,7 +7174,7 @@ Dodaj więcej zasad wydatków, żeby chronić płynność finansową firmy.`,
alreadyConnectedPrompt: 'Musisz odłączyć swoją obecną platformę HR, zanim podłączysz inną.',
lastSync: (relativeDate: string) => `Ostatnia synchronizacja ${relativeDate}`,
syncError: (providerName: string) => `Nie można połączyć z ${providerName}`,
- authenticationError: (providerName: string) => `Nie można połączyć z ${providerName} z powodu nieprawidłowych danych logowania.`,
+ authenticationError: (providerName: string) => `Nie można było połączyć z ${providerName} z powodu nieprawidłowych danych logowania.`,
reconnect: 'Połącz ponownie',
connectionDescription: (providerName: string) => `Połącz ${providerName}, aby synchronizować akceptacje pracowników z Twoim miejscem pracy.`,
approvalMode: 'Tryb zatwierdzania',
diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts
index a984eefb5d4..e5fd92a3887 100644
--- a/src/languages/pt-BR.ts
+++ b/src/languages/pt-BR.ts
@@ -7181,7 +7181,7 @@ Adicione mais regras de gasto para proteger o fluxo de caixa da empresa.`,
alreadyConnectedPrompt: 'Você precisa desconectar sua plataforma de RH atual antes de conectar outra.',
lastSync: (relativeDate: string) => `Última sincronização ${relativeDate}`,
syncError: (providerName: string) => `Não é possível conectar ao ${providerName}`,
- authenticationError: (providerName: string) => `Não foi possível conectar ao ${providerName} devido a credenciais incorretas.`,
+ authenticationError: (providerName: string) => `Não foi possível conectar a ${providerName} devido a credenciais incorretas.`,
reconnect: 'Reconectar',
connectionDescription: (providerName: string) => `Conecte ${providerName} para manter as aprovações de funcionários sincronizadas com seu workspace.`,
approvalMode: 'Modo de aprovação',
diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts
index 73d7aa09982..3550273138f 100644
--- a/src/languages/zh-hans.ts
+++ b/src/languages/zh-hans.ts
@@ -6992,7 +6992,7 @@ ${reportName}
alreadyConnectedPrompt: '在连接其他人力资源平台之前,您必须先断开当前的人力资源平台。',
lastSync: (relativeDate: string) => `上次同步 ${relativeDate}`,
syncError: (providerName: string) => `无法连接到 ${providerName}`,
- authenticationError: (providerName: string) => `由于凭据不正确,无法连接到 ${providerName}。`,
+ authenticationError: (providerName: string) => `由于凭证不正确,无法连接到 ${providerName}。`,
reconnect: '重新连接',
connectionDescription: (providerName: string) => `连接 ${providerName},以在您的工作区中同步员工审批。`,
approvalMode: '审批模式',
Note You can apply these changes to your branch by copying the patch to your clipboard, then running |
Codecov Report✅ Changes either increased or maintained existing code coverage, great job!
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Explanation of Change
When Merge HR sync fails with an authentication error, the provider card shows a red credentials message and inline Reconnect instead of "Last synced". Reconnect opens
ConnectToHRFlowwithout the "multiple HR platforms" modal.Fixed Issues
$ #90605
PROPOSAL:
Tests
workspaces/<policyID>/hrwith Merge HR connected andlastSync.isAuthenticationError: true.FAILEDandisAuthenticationError: false, confirm generic sync error unchanged.Offline tests
QA Steps
Same as Tests; validated on dev web via Playwright (scenarios A–F).
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectionScreenshots/Videos
Android: Native
N/A — web-only QA for this change.
Android: mWeb Chrome
N/A — web-only QA for this change.
iOS: Native
N/A — web-only QA for this change.
iOS: mWeb Safari
N/A — web-only QA for this change.
MacOS: Chrome / Safari
Playwright QA on
https://dev.new.expensify.com:8082/(policyD905C1EFC9954804,mergeHRConnectionsbeta). Artifacts:docs/qa/90605/(local; not committed).A-auth-error-banner.pngB-reconnect-flow.webm,B-reconnect-click.pngC-healthy-last-sync.pngD-generic-sync-error.pngE-multi-hr-blocked.pngF-offline.png(Attach the files above to this PR comment thread before marking ready for review.)
Made with Cursor