From 67067a54b3cf610882f01cbec5f051e7d8f60f3a Mon Sep 17 00:00:00 2001 From: "promptless[bot]" Date: Wed, 19 Aug 2026 17:26:19 +0000 Subject: [PATCH] Match GitLab connect tile/button labels to post-#4667 UI MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Update the GitLab integration reference connect step and its Doc Detective spec to the tile titles and connect-button labels produced by Promptless/promptless#4667 (removes the doubled "Connect Connect GitLab" text). Tiles become "GitLab" / "Self-hosted GitLab" with buttons "Connect GitLab" / "Connect Self-hosted GitLab". Deferred: hold until Promptless/promptless#4667 merges — production still shows the pre-fix labels. --- .doc-detective/tests/gitlab-connect.spec.json | 10 +++++----- .../docs/docs/reference/integrations/gitlab.mdx | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.doc-detective/tests/gitlab-connect.spec.json b/.doc-detective/tests/gitlab-connect.spec.json index 9a78b8dd5..03aebcbbd 100644 --- a/.doc-detective/tests/gitlab-connect.spec.json +++ b/.doc-detective/tests/gitlab-connect.spec.json @@ -69,7 +69,7 @@ { "description": "Both documented tiles are present and each carries a Connect button. Tiles are located by their exact visible title -- the names the walkthrough uses -- and the Connect button is found within each tile's own container rather than by DOM order, so renaming a tile title or its button fails here. The dashboard is styled with build-hashed CSS-module classes, so matching is on visible text, not class names.", "runBrowserScript": { - "script": "const tile = (title) => { const label = Array.from(document.querySelectorAll('h1,h2,h3,h4,h5,h6,div,span,p')).find((n) => n.children.length === 0 && n.textContent.trim() === title); if (!label) return { title: 'missing', connect: 'n/a' }; let node = label; let btn = null; for (let i = 0; i < 6 && node; i++) { btn = Array.from(node.querySelectorAll('button')).find((b) => b.textContent.trim() === 'Connect'); if (btn) break; node = node.parentElement; } return { title: 'present', connect: btn ? 'present' : 'missing' }; }; const g = tile('Connect GitLab'); const s = tile('Connect self-hosted GitLab'); return ['gitlabTile=' + g.title, 'gitlabConnect=' + g.connect, 'selfHostedTile=' + s.title, 'selfHostedConnect=' + s.connect].join(' ');", + "script": "const tile = (title, btnText) => { const label = Array.from(document.querySelectorAll('h1,h2,h3,h4,h5,h6,div,span,p')).find((n) => n.children.length === 0 && n.textContent.trim() === title); if (!label) return { title: 'missing', connect: 'n/a' }; let node = label; let btn = null; for (let i = 0; i < 6 && node; i++) { btn = Array.from(node.querySelectorAll('button')).find((b) => b.textContent.trim() === btnText); if (btn) break; node = node.parentElement; } return { title: 'present', connect: btn ? 'present' : 'missing' }; }; const g = tile('GitLab', 'Connect GitLab'); const s = tile('Self-hosted GitLab', 'Connect Self-hosted GitLab'); return ['gitlabTile=' + g.title, 'gitlabConnect=' + g.connect, 'selfHostedTile=' + s.title, 'selfHostedConnect=' + s.connect].join(' ');", "output": "gitlabTile=present gitlabConnect=present selfHostedTile=present selfHostedConnect=present", "timeout": 10000 } @@ -141,9 +141,9 @@ "wait": 6000 }, { - "description": "Open the gitlab.com connect modal by clicking the Connect button inside the 'Connect GitLab' tile. This opens the modal; it does not submit the connection.", + "description": "Open the gitlab.com connect modal by clicking the Connect GitLab button inside the 'GitLab' tile. This opens the modal; it does not submit the connection.", "runBrowserScript": { - "script": "const label = Array.from(document.querySelectorAll('h1,h2,h3,h4,h5,h6,div,span,p')).find((n) => n.children.length === 0 && n.textContent.trim() === 'Connect GitLab'); if (!label) return 'tile=missing'; let node = label; let btn = null; for (let i = 0; i < 6 && node; i++) { btn = Array.from(node.querySelectorAll('button')).find((b) => b.textContent.trim() === 'Connect'); if (btn) break; node = node.parentElement; } if (!btn) return 'connect=missing'; btn.click(); return 'connect=clicked';", + "script": "const label = Array.from(document.querySelectorAll('h1,h2,h3,h4,h5,h6,div,span,p')).find((n) => n.children.length === 0 && n.textContent.trim() === 'GitLab'); if (!label) return 'tile=missing'; let node = label; let btn = null; for (let i = 0; i < 6 && node; i++) { btn = Array.from(node.querySelectorAll('button')).find((b) => b.textContent.trim() === 'Connect GitLab'); if (btn) break; node = node.parentElement; } if (!btn) return 'connect=missing'; btn.click(); return 'connect=clicked';", "output": "connect=clicked", "timeout": 10000 } @@ -169,9 +169,9 @@ "wait": 6000 }, { - "description": "Open the self-hosted connect modal by clicking the Connect button inside the 'Connect self-hosted GitLab' tile. This opens the modal; it does not submit the connection.", + "description": "Open the self-hosted connect modal by clicking the Connect Self-hosted GitLab button inside the 'Self-hosted GitLab' tile. This opens the modal; it does not submit the connection.", "runBrowserScript": { - "script": "const label = Array.from(document.querySelectorAll('h1,h2,h3,h4,h5,h6,div,span,p')).find((n) => n.children.length === 0 && n.textContent.trim() === 'Connect self-hosted GitLab'); if (!label) return 'tile=missing'; let node = label; let btn = null; for (let i = 0; i < 6 && node; i++) { btn = Array.from(node.querySelectorAll('button')).find((b) => b.textContent.trim() === 'Connect'); if (btn) break; node = node.parentElement; } if (!btn) return 'connect=missing'; btn.click(); return 'connect=clicked';", + "script": "const label = Array.from(document.querySelectorAll('h1,h2,h3,h4,h5,h6,div,span,p')).find((n) => n.children.length === 0 && n.textContent.trim() === 'Self-hosted GitLab'); if (!label) return 'tile=missing'; let node = label; let btn = null; for (let i = 0; i < 6 && node; i++) { btn = Array.from(node.querySelectorAll('button')).find((b) => b.textContent.trim() === 'Connect Self-hosted GitLab'); if (btn) break; node = node.parentElement; } if (!btn) return 'connect=missing'; btn.click(); return 'connect=clicked';", "output": "connect=clicked", "timeout": 10000 } diff --git a/src/content/docs/docs/reference/integrations/gitlab.mdx b/src/content/docs/docs/reference/integrations/gitlab.mdx index f89bd5d08..5a7852d97 100644 --- a/src/content/docs/docs/reference/integrations/gitlab.mdx +++ b/src/content/docs/docs/reference/integrations/gitlab.mdx @@ -33,7 +33,7 @@ Setup has two parts: create a group access token in GitLab, then connect it in P 2. **Open the [Integrations](https://app.gopromptless.ai/integrations) page** in the Promptless dashboard. - 3. **Start the GitLab connection.** For a gitlab.com group, find the **Connect GitLab** tile and click **Connect**. For a self-hosted instance, use the **Connect self-hosted GitLab** tile instead and enter your **Instance hostname** — just the host, no `https://` and no path (for example, `gitlab.acme.com`). + 3. **Start the GitLab connection.** For a gitlab.com group, find the **GitLab** tile and click **Connect GitLab**. For a self-hosted instance, use the **Self-hosted GitLab** tile instead, click **Connect Self-hosted GitLab**, and enter your **Instance hostname** — just the host, no `https://` and no path (for example, `gitlab.acme.com`). 4. **Paste the token** into the **Group Access Token** field and click **Connect**.