@bongos/core 1.21.104 → 1.21.106
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.bongos-core.json +57 -47
- package/docs/copy-inventory.md +368 -366
- package/docs/copy-registry.json +475 -457
- package/docs/design/project-startup-direction.md +14 -0
- package/docs/module-api-changelog.md +4 -0
- package/docs/page-inventory.json +10 -3
- package/docs/page-readings.json +1023 -977
- package/modules/lifecycle/check-rollup.js +11 -1
- package/modules/lifecycle/github-push.js +3 -7
- package/modules/public-landing/public/projects-hall-live.states.json +3 -2
- package/modules/public-landing/public/projects-setup.states.json +91 -0
- package/modules/public-landing/public/projects.html +535 -804
- package/modules/public-landing/public/projects.probes.json +3 -3
- package/modules/public-landing/public/projects.states.json +1 -1
- package/modules/ui-design/kit/fixtures/provisioning-instances-hall-live.json +22 -2
- package/modules/ui-design/kit/fixtures/provisioning-instances-setup.json +195 -0
- package/modules/ui-design/kit/serve.js +22 -4
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/release-notes.json +12 -0
- package/scripts/gds/ship-land.js +2 -2
- package/src/module-api.js +1 -1
- package/tests/cosmos_token_contrast.mjs +10 -18
- package/tests/github_handback_any_device.mjs +4 -3
- package/tests/github_one_trip.mjs +45 -47
- package/tests/github_org_account.mjs +2 -2
- package/tests/github_pick_up.mjs +40 -29
- package/tests/github_push_merge_driver.mjs +46 -0
- package/tests/onboard.mjs +13 -7
- package/tests/project_invite_ui.mjs +6 -3
- package/tests/project_modules_ui.mjs +3 -3
- package/tests/projects_hub.mjs +8 -9
- package/tests/projects_hub_cloud_hop.mjs +77 -125
- package/tests/projects_hub_dns_ready.mjs +42 -51
- package/tests/projects_hub_pre_uat.mjs +68 -69
- package/tests/public_landing_projects.mjs +45 -102
- package/tests/setup_status_facts.mjs +400 -0
- package/tests/wizard_github_feedback.mjs +90 -87
- package/tests/wizard_one_page.mjs +11 -9
- package/tests/wizard_auto_open.mjs +0 -94
|
@@ -39,4 +39,14 @@ function readCheckRollup(rollup) {
|
|
|
39
39
|
};
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
// The conclusions that mean a check really FAILED (task 1004666). One set for both
|
|
43
|
+
// readers: the laptop's ship-land.js (task 1003764) and the server's mergeBlockReason.
|
|
44
|
+
// readCheckRollup maps a status context's state into `conclusion`, so PENDING and
|
|
45
|
+
// EXPECTED (posted but unfinished, or required but not yet reported) land there too —
|
|
46
|
+
// those are waiting, not red. The server reader used to count anything outside
|
|
47
|
+
// SUCCESS/NEUTRAL/SKIPPED as failing, which named a still-running check as the reason
|
|
48
|
+
// a PR was red and sent the publish reconciler after a regen-heal it did not need.
|
|
49
|
+
const RED_CONCLUSIONS = new Set(['FAILURE', 'ERROR', 'TIMED_OUT', 'CANCELLED', 'ACTION_REQUIRED', 'STARTUP_FAILURE']);
|
|
50
|
+
const isRedCheck = (c) => !!c && RED_CONCLUSIONS.has(String(c.conclusion || '').toUpperCase());
|
|
51
|
+
|
|
52
|
+
module.exports = { readCheckRollup, UNIT_REPORT_CONTEXT, RED_CONCLUSIONS, isRedCheck };
|
|
@@ -40,7 +40,7 @@ const os = require('node:os');
|
|
|
40
40
|
const path = require('node:path');
|
|
41
41
|
const { promisify } = require('node:util');
|
|
42
42
|
const { repoInfo, userAgent } = require('../../src/module-api');
|
|
43
|
-
const { readCheckRollup, UNIT_REPORT_CONTEXT } = require('./check-rollup');
|
|
43
|
+
const { readCheckRollup, UNIT_REPORT_CONTEXT, isRedCheck } = require('./check-rollup'); // isRedCheck: only a FAILED check is red, never a pending one (task 1004666)
|
|
44
44
|
const { loadRepoInfo } = repoInfo;
|
|
45
45
|
|
|
46
46
|
const execFileP = promisify(execFile);
|
|
@@ -951,10 +951,6 @@ async function getMergeState({ branch }, deps = {}) {
|
|
|
951
951
|
};
|
|
952
952
|
}
|
|
953
953
|
|
|
954
|
-
// A non-passing check conclusion (everything that isn't a clean success/skip).
|
|
955
|
-
const _BAD_CHECK = (c) =>
|
|
956
|
-
c.conclusion && !['SUCCESS', 'NEUTRAL', 'SKIPPED'].includes(String(c.conclusion).toUpperCase());
|
|
957
|
-
|
|
958
954
|
// Human-readable reason a not-yet-merged PR isn't mergeable, surfaced to a
|
|
959
955
|
// credential-less session so it reports the truth instead of guessing.
|
|
960
956
|
function mergeBlockReason(s) {
|
|
@@ -967,7 +963,7 @@ function mergeBlockReason(s) {
|
|
|
967
963
|
if (s.review_decision === 'CHANGES_REQUESTED') return 'changes_requested';
|
|
968
964
|
if (s.review_decision === 'REVIEW_REQUIRED') return 'review_required';
|
|
969
965
|
if (s.merge_state === 'BLOCKED') {
|
|
970
|
-
const bad = s.checks.filter(
|
|
966
|
+
const bad = s.checks.filter(isRedCheck);
|
|
971
967
|
if (bad.length) return `failing_check:${bad[0].name}`;
|
|
972
968
|
// Red, and the failing check is one of the nulled nodes: say the list is blind
|
|
973
969
|
// rather than guess "review or pending", which sent a ship retrying (task 1003988).
|
|
@@ -975,7 +971,7 @@ function mergeBlockReason(s) {
|
|
|
975
971
|
return 'blocked_required_review_or_pending_check';
|
|
976
972
|
}
|
|
977
973
|
if (s.merge_state === 'UNSTABLE') {
|
|
978
|
-
const bad = s.checks.filter(
|
|
974
|
+
const bad = s.checks.filter(isRedCheck);
|
|
979
975
|
return bad.length ? `non_required_check_failing:${bad[0].name}` : 'non_required_check_pending';
|
|
980
976
|
}
|
|
981
977
|
if (s.mergeable === 'UNKNOWN' || s.merge_state === 'UNKNOWN' || s.merge_state == null) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"_": "The create wizard done panel once the hall answers (task 1004503): the same walk as projects.states.json in-new-done, with the instance list aliased so the project just filed (id 102) is live and verified up. The invite box
|
|
2
|
+
"_": "The create wizard done panel once the hall answers (task 1004503): the same walk as projects.states.json in-new-done, with the instance list aliased so the project just filed (id 102) is live and verified up, with its GitHub app approved, installed and signed in (since task 1004683 part 03 says it is alive only once every required fact is done). The invite box and the Enter Genesis door open only now; in-new-done in the main file pictures it shut while the project is set up. Rendered by name: node modules/ui-design/kit/render.js --states modules/public-landing/public/projects-hall-live.states.json",
|
|
3
3
|
"page": "/projects",
|
|
4
4
|
"surface": "public-landing",
|
|
5
5
|
"modes": [
|
|
@@ -131,7 +131,8 @@
|
|
|
131
131
|
"#panel-done",
|
|
132
132
|
"#wizInvite",
|
|
133
133
|
"#wizInviteWho",
|
|
134
|
-
"#
|
|
134
|
+
"#doneAlive",
|
|
135
|
+
"#enterGenesis"
|
|
135
136
|
],
|
|
136
137
|
"hidden": [
|
|
137
138
|
"#hop",
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_": "Part 03 after Create, the five scenarios of the design of record docs/design/mocks/day-night-rooms/setup-status.html (task 1004683): the same page and stub, the instance list aliased to one project per scenario, each opened by URL the way the GitHub return route lands a founder (?view=new&id=<project>). The GitHub halves of each owner read come from the REAL projections (see the fixture's note). The room follows the viewer's clock, so these renders picture whichever room the machine's clock gives, and the stub serves a local address with no apex base, so the Approve fact pictures its local-platform branch (GitHub cannot reach a local platform) rather than Connect GitHub. The day and night shots attached to the task were taken with the browser's timezone moved and the apex stamped. Rendered by name: node modules/ui-design/kit/render.js --states modules/public-landing/public/projects-setup.states.json",
|
|
3
|
+
"page": "/projects",
|
|
4
|
+
"surface": "public-landing",
|
|
5
|
+
"modes": [
|
|
6
|
+
"dark"
|
|
7
|
+
],
|
|
8
|
+
"modeQuery": false,
|
|
9
|
+
"stub": {
|
|
10
|
+
"fixtures": {
|
|
11
|
+
"provisioning-instances": "provisioning-instances-setup"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"ignoreRequests": [
|
|
15
|
+
"/api/(gds|bongos)/me$",
|
|
16
|
+
"/my-projects",
|
|
17
|
+
"/github/orgs",
|
|
18
|
+
"/env-manifest$"
|
|
19
|
+
],
|
|
20
|
+
"ignoreConsole": [
|
|
21
|
+
"/api/(gds|bongos)/me",
|
|
22
|
+
"\\b401\\b",
|
|
23
|
+
"\\b404\\b",
|
|
24
|
+
"Unauthorized"
|
|
25
|
+
],
|
|
26
|
+
"ignoreControls": [
|
|
27
|
+
".skip",
|
|
28
|
+
".vh"
|
|
29
|
+
],
|
|
30
|
+
"states": {
|
|
31
|
+
"setup-just-created": {
|
|
32
|
+
"auth": true,
|
|
33
|
+
"url": "/projects?view=new&id=201",
|
|
34
|
+
"actions": [["wait", 1500]],
|
|
35
|
+
"expect": {
|
|
36
|
+
"visible": ["#panel-done", "#setupNow", "#homeFacts", "#ghFacts", "#hopLink", "#homeFacts [data-fact=\"server\"].now"],
|
|
37
|
+
"hidden": ["#wizParts", "#hop", "#doneAlive", "#aaPick"],
|
|
38
|
+
"text": [["#donePartT", "Getting kestrel ready"], ["#ghState", "1 of 6 done"]]
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"setup-waiting-on-github": {
|
|
42
|
+
"auth": true,
|
|
43
|
+
"url": "/projects?view=new&id=202",
|
|
44
|
+
"actions": [["wait", 1500]],
|
|
45
|
+
"expect": {
|
|
46
|
+
"visible": ["#panel-done", "#homeFacts [data-fact=\"answers\"].now"],
|
|
47
|
+
"hidden": ["#hop", "#doneAlive", "#aaPick"],
|
|
48
|
+
"text": [["#ghState", "2 of 6 done"]]
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
"setup-installing": {
|
|
52
|
+
"auth": true,
|
|
53
|
+
"url": "/projects?view=new&id=203",
|
|
54
|
+
"actions": [["wait", 1500]],
|
|
55
|
+
"expect": {
|
|
56
|
+
"visible": ["#panel-done", "#ghFacts [data-fact=\"install\"].you"],
|
|
57
|
+
"hidden": ["#hop", "#doneAlive"],
|
|
58
|
+
"text": [["#ghState", "4 of 6 done"]]
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
"setup-stopped": {
|
|
62
|
+
"auth": true,
|
|
63
|
+
"url": "/projects?view=new&id=204",
|
|
64
|
+
"actions": [["wait", 1500]],
|
|
65
|
+
"expect": {
|
|
66
|
+
"visible": ["#panel-done", "#ghFacts [data-fact=\"install\"].bad [data-action=\"pick-up\"]"],
|
|
67
|
+
"hidden": ["#hop", "#doneAlive"],
|
|
68
|
+
"text": [["#ghState", "5 of 6 done"]]
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
"setup-all-done": {
|
|
72
|
+
"auth": true,
|
|
73
|
+
"url": "/projects?view=new&id=205",
|
|
74
|
+
"actions": [["wait", 1500]],
|
|
75
|
+
"expect": {
|
|
76
|
+
"visible": ["#panel-done", "#doneAlive", "#enterGenesis"],
|
|
77
|
+
"hidden": ["#hop", "#hopLink"],
|
|
78
|
+
"text": [["#ghState", "ready ✓"], ["#done-h", "wren is alive."], ["#enterGenesis", "Enter Genesis"]]
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
"setup-cloud-hop-open": {
|
|
82
|
+
"auth": true,
|
|
83
|
+
"url": "/projects?view=new&id=201",
|
|
84
|
+
"actions": [["wait", 1200], ["click", "#hopLink"], ["wait", 600]],
|
|
85
|
+
"expect": {
|
|
86
|
+
"visible": ["#hop", "#hopCanvas"],
|
|
87
|
+
"attr": [["#hopLink", "aria-expanded", "true"]]
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|