@@ -11579,32 +11579,38 @@ async function waitForJestTests() {
1157911579 const maxWaitTime = 30 * 60 * 1000; // 30 minutes
1158011580 const pollInterval = 10 * 1000; // 10 seconds
1158111581 const startTime = Date.now();
11582- // Get PR number and SHA (backwards compatible with manual dispatch)
11582+ // Get PR number from either context or manual input
1158311583 let prNumber;
11584- let headSha ;
11584+ const inputsPRNumber = github_1.context.payload.inputs?.pr_number ;
1158511585 if (github_1.context.payload.pull_request?.number) {
11586+ // Regular PR context
1158611587 prNumber = github_1.context.payload.pull_request.number;
11587- headSha = github_1.context.sha;
11588- console.log(`Using PR context - PR #${prNumber}, SHA: ${headSha}`);
11588+ console.log(`Using PR context - PR #${prNumber}`);
11589+ }
11590+ else if (inputsPRNumber) {
11591+ // Manual workflow dispatch
11592+ prNumber = Number(inputsPRNumber);
11593+ console.log(`Using manual dispatch - PR #${prNumber}`);
1158911594 }
1159011595 else {
11591- prNumber = Number(github_1.context.payload.inputs?.pr_number ?? '0');
11592- if (!prNumber) {
11593- core.setFailed('PR number is required when pull_request context is not available.');
11594- return;
11595- }
11596- // Get PR details to find the head SHA
11597- console.log(`Using workflow inputs - Getting details for PR #${prNumber}`);
11598- const prResponse = await GithubUtils_1.default.octokit.pulls.get({
11599- owner: github_1.context.repo.owner,
11600- repo: github_1.context.repo.repo,
11601- pull_number: prNumber,
11602- });
11603- headSha = prResponse.data.head.sha;
11604- console.log(`PR #${prNumber} head SHA: ${headSha}`);
11596+ core.setFailed('PR number is required but not available in context or inputs.');
11597+ return;
1160511598 }
11606- console.log(`Looking for test workflow runs for PR #${github_1.context.payload.pull_request?.number}`);
11607- console.log(`Head SHA: ${github_1.context.sha}`);
11599+ if (!prNumber) {
11600+ core.setFailed('Invalid PR number.');
11601+ return;
11602+ }
11603+ // Single API call to get PR details and extract headSha
11604+ console.log(`Getting PR details for PR #${prNumber}...`);
11605+ const prResponse = await GithubUtils_1.default.octokit.pulls.get({
11606+ owner: github_1.context.repo.owner,
11607+ repo: github_1.context.repo.repo,
11608+ pull_number: prNumber,
11609+ });
11610+ const headSha = prResponse.data.head.sha;
11611+ console.log(`PR #${prNumber} head SHA: ${headSha}`);
11612+ console.log(`Looking for test workflow runs for PR #${prNumber}`);
11613+ console.log(`Head SHA: ${headSha}`);
1160811614 while (Date.now() - startTime < maxWaitTime) {
1160911615 // Get all recent workflow runs for this repo
1161011616 const workflows = await GithubUtils_1.default.listWorkflowRunsForRepo({
@@ -11617,7 +11623,7 @@ async function waitForJestTests() {
1161711623 // Check if it's the Jest Unit Tests workflow specifically
1161811624 const isTestWorkflow = run.name === CONST_1.default.TEST_WORKFLOW_NAME || run.path === CONST_1.default.TEST_WORKFLOW_PATH;
1161911625 // Check if it's for our PR's head SHA
11620- const matchesSHA = run.head_sha === github_1.context.sha ;
11626+ const matchesSHA = run.head_sha === headSha ;
1162111627 // For manual dispatch or when no PR context, be more flexible with event types
1162211628 // For regular PR events, maintain existing strict logic
1162311629 const isValidEvent = github_1.context.payload.pull_request
@@ -11646,7 +11652,7 @@ async function waitForJestTests() {
1164611652 });
1164711653 const inProgressTestRuns = inProgressWorkflows.data.workflow_runs.filter((run) => {
1164811654 const isTestWorkflow = run.name === CONST_1.default.TEST_WORKFLOW_NAME || run.path === CONST_1.default.TEST_WORKFLOW_PATH;
11649- const matchesSHA = run.head_sha === github_1.context.sha ;
11655+ const matchesSHA = run.head_sha === headSha ;
1165011656 const isValidEvent = github_1.context.payload.pull_request
1165111657 ? run.event === CONST_1.default.RUN_EVENT.PULL_REQUEST || run.event === CONST_1.default.RUN_EVENT.PULL_REQUEST_TARGET
1165211658 : run.event === CONST_1.default.RUN_EVENT.PULL_REQUEST || run.event === CONST_1.default.RUN_EVENT.PULL_REQUEST_TARGET || run.event === CONST_1.default.RUN_EVENT.PUSH;
@@ -11660,7 +11666,7 @@ async function waitForJestTests() {
1166011666 console.log('No matching test workflow runs found, checking if tests are required...');
1166111667 // Check if there might be no test workflow triggered
1166211668 // This could happen if the PR doesn't have testable changes
11663- const allRecentRuns = workflows.data.workflow_runs.filter((run) => run.head_sha === github_1.context.sha );
11669+ const allRecentRuns = workflows.data.workflow_runs.filter((run) => run.head_sha === headSha );
1166411670 console.log(`Found ${allRecentRuns.length} workflow runs for this SHA.`);
1166511671 // Assume tests passed if no workflow runs exist
1166611672 if (allRecentRuns.length === 0) {
0 commit comments