UNPKG

tdpw

Version:

CLI tool for uploading Playwright test reports to TestDino platform with TestDino storage support

121 lines 4.67 kB
/** * Official documentation for CI/CD environment variables: * - GitHub Actions: https://docs.github.com/en/actions/reference/environment-variables * - CircleCI: https://circleci.com/docs/reference/variables/ * - GitLab CI: https://docs.gitlab.com/ee/ci/variables/predefined_variables.html * - Azure DevOps: https://learn.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml */ /** * Git metadata structure matching server schema */ export interface GitMetadata { branch: string; commit: { hash: string; message: string; author: string; authorId?: string; email: string; timestamp: string; }; repository: { name: string; url: string; }; pr: { id: string; title: string; url: string; status: '' | 'open' | 'draft' | 'ready_for_review' | 'changes_requested' | 'approved' | 'merged' | 'closed'; }; environment?: string; } /** * Collector for Git metadata */ export declare class GitCollector { private readonly git; private readonly repoPath; constructor(repoPath?: string); /** * Configure git to work properly in CI/CD environments * Fixes "dubious ownership" errors in GitHub Actions and other CI/CD platforms */ private configureGitForCI; /** * Gather Git metadata: branch, latest commit, and remote repository info * Uses git commands as primary source, falls back to environment variables in CI/CD */ getMetadata(): Promise<GitMetadata>; /** * Normalize PR status to match server enum */ private normalizeStatus; /** * Attempt to gather metadata using git commands with comprehensive error handling * CRITICAL: Ensures no data loss - always collects what's available */ private getGitCommandMetadata; /** * Extract git metadata from environment variables (CI/CD contexts) * * Author Resolution Priority (highest to lowest): * ============================================ * For Pull Request Events: * 1. GitHub Branch Commit API (data.author.login) - Most accurate, includes user ID * 2. PR Head User Login (event file: pull_request.head.user.login) * 3. Git Author Name (git show %an) - Fallback when GitHub login unavailable * * For Non-PR Events (push, workflow_dispatch, etc.): * 1. GitHub Branch Commit API (data.author.login) - Most accurate, includes user ID * 2. GitHub Users API (fetched by username) - Fallback if commit API unavailable * 3. Git Author Name (git config user.name) - Fallback when APIs unavailable * * Rationale: GitHub login usernames are preferred for consistent author deduplication * across the platform, as git config names can vary (e.g., "John Doe" vs "John" vs "jdoe"). */ private getEnvironmentMetadata; /** * Extract branch name from git ref (e.g., "refs/heads/main" -> "main") */ private extractBranchFromRef; /** * Extract repository name from URL (e.g., "https://github.com/user/repo.git" -> "user/repo") * Special handling for Azure DevOps: "https://dev.azure.com/org/project/_git/repo" -> "project/repo" */ private extractRepoNameFromUrl; /** * Clean GitLab repository URL by removing CI token * Converts: https://gitlab-ci-token:xxxxx@gitlab.com/user/repo.git * To: https://gitlab.com/user/repo.git */ private cleanGitLabUrl; /** * Clean CircleCI repository URL by removing SSH format and converting to HTTPS * Converts: git@github.com:user/repo.git -> https://github.com/user/repo.git * Also removes any credentials and normalizes URLs */ private cleanCircleCIUrl; /** * Clean Azure DevOps repository URL by removing credentials * Converts: https://user@dev.azure.com/org/Project%20Name/_git/Repo%20Name * To: https://dev.azure.com/org/Project%20Name/_git/Repo%20Name * Note: Keeps URL encoding intact for valid URL format */ private cleanAzureDevOpsUrl; /** * Fetch GitHub user info using the public Users API * This works for both public and private repos since it only queries user data */ private fetchGitHubUserInfo; /** * Fetch the HEAD commit information from a specific branch to get the actual commit message * This avoids merge commit messages in PR scenarios */ private fetchGitHubBranchCommit; /** * Fetch pull request details from GitHub API to get PR title and status */ private fetchGitHubPullRequestDetails; } //# sourceMappingURL=git.d.ts.map