apify-test-tools 0.9.1-beta.8 → 0.9.1-beta.9
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/.github/actions/checkout-restore-dependencies/action.yaml +1 -1
- package/.github/scripts/check-major-tag-refs.mjs +1 -1
- package/.github/workflows/_move_major_tag.yaml +11 -3
- package/.github/workflows/public_platform-tests-claude-investigate-and-fix.yaml +2 -2
- package/.github/workflows/public_platform-tests.yaml +1 -1
- package/.github/workflows/public_pr-build-test.yaml +2 -2
- package/.github/workflows/public_push-build-latest.yaml +1 -1
- package/.github/workflows/public_review.yaml +1 -1
- package/CHANGELOG.md +4 -0
- package/CONTRIBUTING.md +9 -3
- package/README.md +22 -20
- package/package.json +1 -1
|
@@ -26,7 +26,7 @@ outputs:
|
|
|
26
26
|
|
|
27
27
|
# Sets common steps and ensure we use cached node_modules
|
|
28
28
|
# To test a change here, repoint the `uses:` refs in the reusable workflows at your branch, and
|
|
29
|
-
# change them back before merging. Merging to master no longer ships it: consumers track the `v0`
|
|
29
|
+
# change them back before merging. Merging to master no longer ships it: consumers track the `workflows-v0`
|
|
30
30
|
# tag, which only moves once the package version in .github/workflows-package-version is on npm.
|
|
31
31
|
runs:
|
|
32
32
|
using: 'composite'
|
|
@@ -36,7 +36,7 @@ const walk = (rel) => {
|
|
|
36
36
|
|
|
37
37
|
const problems = [];
|
|
38
38
|
|
|
39
|
-
// Self-references, e.g. `uses: apify/apify-test-tools/.github/workflows/public_pr-build-test.yaml@v0`.
|
|
39
|
+
// Self-references, e.g. `uses: apify/apify-test-tools/.github/workflows/public_pr-build-test.yaml@workflows-v0`.
|
|
40
40
|
// The ref charset stops at a backtick or quote so a ref quoted in prose isn't captured with its
|
|
41
41
|
// punctuation; git refnames cannot end in a dot, so a sentence-final one is trimmed.
|
|
42
42
|
const SELF_REF = /apify\/apify-test-tools\/\.github\/\S*?@([A-Za-z0-9._/-]+)/g;
|
|
@@ -32,16 +32,24 @@ jobs:
|
|
|
32
32
|
contents: write
|
|
33
33
|
env:
|
|
34
34
|
# The major version consumers pin, e.g.
|
|
35
|
-
# `uses: apify/apify-test-tools/.github/workflows/public_pr-build-test.yaml@v0`.
|
|
35
|
+
# `uses: apify/apify-test-tools/.github/workflows/public_pr-build-test.yaml@workflows-v0`.
|
|
36
36
|
# Bump this only for a breaking change to a workflow's inputs, secrets or behaviour.
|
|
37
37
|
# The previous tag then stops moving and keeps working, so repos migrate when they get
|
|
38
38
|
# to it instead of all at once.
|
|
39
39
|
#
|
|
40
40
|
# This tracks the workflows' own contract, not the npm package version — the two move
|
|
41
|
-
# independently by design, so
|
|
41
|
+
# independently by design, so this is expected to outlive the package reaching 1.0.
|
|
42
|
+
#
|
|
43
|
+
# Deliberately not a bare `v0`. The package releases as `v0.9.0`, `v0.8.6` and so on, and
|
|
44
|
+
# a bare major tag sits in that same namespace: git-cliff hard-errors on it
|
|
45
|
+
# ("unexpected character 'v' while parsing major version number") and only skips it
|
|
46
|
+
# because apify/actions ships `tag_pattern = "v[0-9]+\\."`, whose trailing dot excludes
|
|
47
|
+
# it. Depending on a regex in another repo to keep releases working is not a dependency
|
|
48
|
+
# worth having, and `v1` beside a package `v1.0.0` would be worse still.
|
|
49
|
+
#
|
|
42
50
|
# `uses:` cannot take an expression, so every ref into this repo hardcodes this same tag;
|
|
43
51
|
# check-major-tag-refs.mjs fails the build if one of them drifts.
|
|
44
|
-
MAJOR_TAG: v0
|
|
52
|
+
MAJOR_TAG: workflows-v0
|
|
45
53
|
steps:
|
|
46
54
|
- name: Checkout repository
|
|
47
55
|
uses: actions/checkout@v6
|
|
@@ -20,7 +20,7 @@ name: 'Platform tests: Claude failure investigation and fix'
|
|
|
20
20
|
#
|
|
21
21
|
# jobs:
|
|
22
22
|
# platformTestsCore:
|
|
23
|
-
# uses: apify/apify-test-tools/.github/workflows/public_platform-tests.yaml@v0
|
|
23
|
+
# uses: apify/apify-test-tools/.github/workflows/public_platform-tests.yaml@workflows-v0
|
|
24
24
|
# with:
|
|
25
25
|
# subtest: core
|
|
26
26
|
# secrets: inherit
|
|
@@ -28,7 +28,7 @@ name: 'Platform tests: Claude failure investigation and fix'
|
|
|
28
28
|
# handle-failure:
|
|
29
29
|
# needs: platformTestsCore
|
|
30
30
|
# if: ${{ failure() }}
|
|
31
|
-
# uses: apify/apify-test-tools/.github/workflows/public_platform-tests-claude-investigate-and-fix.yaml@v0
|
|
31
|
+
# uses: apify/apify-test-tools/.github/workflows/public_platform-tests-claude-investigate-and-fix.yaml@workflows-v0
|
|
32
32
|
# secrets: inherit
|
|
33
33
|
|
|
34
34
|
on:
|
|
@@ -37,7 +37,7 @@ jobs:
|
|
|
37
37
|
steps:
|
|
38
38
|
- name: Setup repository and dependencies
|
|
39
39
|
# For testing, you have to temporarily change the branch
|
|
40
|
-
uses: apify/apify-test-tools/.github/actions/checkout-restore-dependencies@v0
|
|
40
|
+
uses: apify/apify-test-tools/.github/actions/checkout-restore-dependencies@workflows-v0
|
|
41
41
|
with:
|
|
42
42
|
working-directory: ${{ inputs.working-directory }}
|
|
43
43
|
additional-working-directory: ${{ inputs.additional-working-directory }}
|
|
@@ -35,7 +35,7 @@ jobs:
|
|
|
35
35
|
- name: Setup repository and dependencies
|
|
36
36
|
id: setup
|
|
37
37
|
# For testing, you have to temporarily change the branch
|
|
38
|
-
uses: apify/apify-test-tools/.github/actions/checkout-restore-dependencies@v0
|
|
38
|
+
uses: apify/apify-test-tools/.github/actions/checkout-restore-dependencies@workflows-v0
|
|
39
39
|
with:
|
|
40
40
|
working-directory: ${{ inputs.working-directory }}
|
|
41
41
|
additional-working-directory: ${{ inputs.additional-working-directory }}
|
|
@@ -142,7 +142,7 @@ jobs:
|
|
|
142
142
|
steps:
|
|
143
143
|
- name: Setup repository and dependencies
|
|
144
144
|
# For testing, you have to temporarily change the branch
|
|
145
|
-
uses: apify/apify-test-tools/.github/actions/checkout-restore-dependencies@v0
|
|
145
|
+
uses: apify/apify-test-tools/.github/actions/checkout-restore-dependencies@workflows-v0
|
|
146
146
|
with:
|
|
147
147
|
working-directory: ${{ inputs.working-directory }}
|
|
148
148
|
additional-working-directory: ${{ inputs.additional-working-directory }}
|
|
@@ -32,7 +32,7 @@ jobs:
|
|
|
32
32
|
- name: Setup repository and dependencies
|
|
33
33
|
id: setup
|
|
34
34
|
# For testing, you have to temporarily change the branch
|
|
35
|
-
uses: apify/apify-test-tools/.github/actions/checkout-restore-dependencies@v0
|
|
35
|
+
uses: apify/apify-test-tools/.github/actions/checkout-restore-dependencies@workflows-v0
|
|
36
36
|
with:
|
|
37
37
|
working-directory: ${{ inputs.working-directory }}
|
|
38
38
|
additional-working-directory: ${{ inputs.additional-working-directory }}
|
|
@@ -14,7 +14,7 @@ on:
|
|
|
14
14
|
description: Label added after a successful review and never removed. Set to an empty string to disable.
|
|
15
15
|
required: false
|
|
16
16
|
prompt-ref:
|
|
17
|
-
default: v0
|
|
17
|
+
default: workflows-v0
|
|
18
18
|
type: string
|
|
19
19
|
description: >-
|
|
20
20
|
Ref of this repository to fetch the review instructions from. Defaults to the
|
package/CHANGELOG.md
CHANGED
|
@@ -14,6 +14,10 @@ All notable changes to this project will be documented in this file.
|
|
|
14
14
|
|
|
15
15
|
- Apply default actor timeout to runs ([#134](https://github.com/apify/apify-test-tools/pull/134)) ([82f5f7d](https://github.com/apify/apify-test-tools/commit/82f5f7d4de990db7ad8edf940c19ffd6b20bad13)) by [@Patai5](https://github.com/Patai5)
|
|
16
16
|
|
|
17
|
+
### 🚜 Refactor
|
|
18
|
+
|
|
19
|
+
- **workflows:** [**breaking**] Rename the floating tag to workflows-v0 ([#146](https://github.com/apify/apify-test-tools/pull/146)) ([c48fb22](https://github.com/apify/apify-test-tools/commit/c48fb223c885c4e5de7e5f64d8c14f6d03fcc7de)) by [@metalwarrior665](https://github.com/metalwarrior665)
|
|
20
|
+
|
|
17
21
|
|
|
18
22
|
<!-- git-cliff-unreleased-end -->
|
|
19
23
|
## [0.9.0](https://github.com/apify/apify-test-tools/releases/tag/v0.9.0) (2026-08-11)
|
package/CONTRIBUTING.md
CHANGED
|
@@ -71,14 +71,20 @@ this repo's own triggers.
|
|
|
71
71
|
A `public_` filename is part of the contract — it is baked into every consumer's `uses:` line, so
|
|
72
72
|
renaming one is a breaking change that needs a major tag bump, not a tidy-up.
|
|
73
73
|
|
|
74
|
-
|
|
74
|
+
The tag is not semver, so `git-cliff` would abort on it. It is skipped only because
|
|
75
|
+
`apify/actions`' cliff.toml sets `tag_pattern = "v[0-9]+\."` — a release failing with
|
|
76
|
+
`Semver error: unexpected character` means that pattern changed, not that anything here is wrong.
|
|
77
|
+
The action's "Nothing to release" guard resolves to this tag and no longer fires, so an empty stable
|
|
78
|
+
release fails at `npm publish` instead of erroring cleanly.
|
|
79
|
+
|
|
80
|
+
Consumers pin `@workflows-v0`, not `@master`. See
|
|
75
81
|
[Versioning and releases](./README.md#versioning-and-releases) in the README for how the tag and the
|
|
76
82
|
npm release relate — the short version:
|
|
77
83
|
|
|
78
84
|
- changing only a workflow needs no npm release
|
|
79
85
|
- changing only the package needs no workflow change
|
|
80
86
|
- a workflow that calls a **new** CLI feature must set `.github/workflows-package-version` to the
|
|
81
|
-
version that will contain it, in the same PR. The `v0` tag is then held until that version is on
|
|
87
|
+
version that will contain it, in the same PR. The `workflows-v0` tag is then held until that version is on
|
|
82
88
|
npm, so merging can't ship a workflow that calls a CLI that doesn't exist yet.
|
|
83
89
|
|
|
84
90
|
`.github/workflows-package-version` holds one exact version, and the stable release writes it. The
|
|
@@ -99,5 +105,5 @@ pushing workflow changes.
|
|
|
99
105
|
|
|
100
106
|
`public_review` is the odd one out: it fetches `.github/review-prompt.md` over HTTP at run time, because a
|
|
101
107
|
reusable workflow runs with the caller's repo checked out and never gets its own. Its `prompt-ref`
|
|
102
|
-
input defaults to `v0` so the instructions come from the same release as the workflow — leaving it
|
|
108
|
+
input defaults to `workflows-v0` so the instructions come from the same release as the workflow — leaving it
|
|
103
109
|
at `master` would run released workflows against unreleased instructions.
|
package/README.md
CHANGED
|
@@ -101,7 +101,7 @@ See the [GitHub workflows](#github-worklows) section below.
|
|
|
101
101
|
|
|
102
102
|
The reusable workflows live in this repo, alongside the package they call. They are the
|
|
103
103
|
`public_`-prefixed files in `.github/workflows`; everything else there is this repo's own CI.
|
|
104
|
-
Reference them at the `@v0` major tag, never at `@master` — see
|
|
104
|
+
Reference them at the `@workflows-v0` major tag, never at `@master` — see
|
|
105
105
|
[Versioning and releases](#versioning-and-releases).
|
|
106
106
|
|
|
107
107
|
There should be 4 GH workflow files in `.github/workflows`, plus an optional fifth for Claude reviews.
|
|
@@ -119,7 +119,7 @@ on:
|
|
|
119
119
|
|
|
120
120
|
jobs:
|
|
121
121
|
platformTestsCore:
|
|
122
|
-
uses: apify/apify-test-tools/.github/workflows/public_platform-tests.yaml@v0
|
|
122
|
+
uses: apify/apify-test-tools/.github/workflows/public_platform-tests.yaml@workflows-v0
|
|
123
123
|
with:
|
|
124
124
|
subtest: core
|
|
125
125
|
secrets: inherit
|
|
@@ -138,7 +138,7 @@ on:
|
|
|
138
138
|
|
|
139
139
|
jobs:
|
|
140
140
|
platformTestsDaily:
|
|
141
|
-
uses: apify/apify-test-tools/.github/workflows/public_platform-tests.yaml@v0
|
|
141
|
+
uses: apify/apify-test-tools/.github/workflows/public_platform-tests.yaml@workflows-v0
|
|
142
142
|
secrets: inherit
|
|
143
143
|
```
|
|
144
144
|
|
|
@@ -153,7 +153,7 @@ on:
|
|
|
153
153
|
|
|
154
154
|
jobs:
|
|
155
155
|
buildDevelAndTest:
|
|
156
|
-
uses: apify/apify-test-tools/.github/workflows/public_pr-build-test.yaml@v0
|
|
156
|
+
uses: apify/apify-test-tools/.github/workflows/public_pr-build-test.yaml@workflows-v0
|
|
157
157
|
secrets: inherit
|
|
158
158
|
```
|
|
159
159
|
|
|
@@ -168,7 +168,7 @@ on:
|
|
|
168
168
|
|
|
169
169
|
jobs:
|
|
170
170
|
buildLatest:
|
|
171
|
-
uses: apify/apify-test-tools/.github/workflows/public_push-build-latest.yaml@v0
|
|
171
|
+
uses: apify/apify-test-tools/.github/workflows/public_push-build-latest.yaml@workflows-v0
|
|
172
172
|
secrets: inherit
|
|
173
173
|
```
|
|
174
174
|
|
|
@@ -186,13 +186,13 @@ on:
|
|
|
186
186
|
|
|
187
187
|
jobs:
|
|
188
188
|
review:
|
|
189
|
-
uses: apify/apify-test-tools/.github/workflows/public_review.yaml@v0
|
|
189
|
+
uses: apify/apify-test-tools/.github/workflows/public_review.yaml@workflows-v0
|
|
190
190
|
secrets: inherit
|
|
191
191
|
```
|
|
192
192
|
|
|
193
193
|
The review instructions live in `.github/review-prompt.md` in this repo and are fetched at run time,
|
|
194
194
|
because a reusable workflow doesn't get its own repo checked out. `prompt-ref` selects which ref to
|
|
195
|
-
fetch them from and defaults to `v0`, so the instructions match the workflow you're calling — point
|
|
195
|
+
fetch them from and defaults to `workflows-v0`, so the instructions match the workflow you're calling — point
|
|
196
196
|
it at a branch only to test a prompt change.
|
|
197
197
|
|
|
198
198
|
### Secrets
|
|
@@ -256,7 +256,7 @@ decide what a consumer repo actually runs:
|
|
|
256
256
|
|
|
257
257
|
| Pointer | What it selects | Moves when |
|
|
258
258
|
| ----------------------------------- | ---------------------------------------------- | -------------------------------------------------------- |
|
|
259
|
-
| the `@v0` tag in `uses:`
|
|
259
|
+
| the `@workflows-v0` tag in `uses:` | which workflows run | a master push, once the version below is published |
|
|
260
260
|
| `.github/workflows-package-version` | which `apify-test-tools` the workflows install | a stable release writes it; you may set it ahead of time |
|
|
261
261
|
|
|
262
262
|
The setup action installs that **exact** version — not a range. A tag is therefore a complete
|
|
@@ -270,31 +270,33 @@ action, which is how branch testing works.
|
|
|
270
270
|
|
|
271
271
|
Nothing is coupled that doesn't need to be:
|
|
272
272
|
|
|
273
|
-
- **Workflow-only change** — merge it. `v0` moves, it goes live, no release needed.
|
|
273
|
+
- **Workflow-only change** — merge it. `workflows-v0` moves, it goes live, no release needed.
|
|
274
274
|
- **Package-only change** — merge it, then cut a release when you want it out. The workflows are
|
|
275
275
|
unchanged, so consumers see nothing until the release lands.
|
|
276
276
|
- **A workflow that calls a new CLI feature** — the one case that can break consumers, and the only
|
|
277
277
|
one with any ceremony. Put the package change, the workflow change, and the new pin in one PR. On
|
|
278
|
-
merge the tag is **held**: the CI job reports that the pinned version isn't on npm and leaves `v0`
|
|
278
|
+
merge the tag is **held**: the CI job reports that the pinned version isn't on npm and leaves `workflows-v0`
|
|
279
279
|
where it is, so consumers keep running the previous workflows. Cut a stable release, and the tag
|
|
280
280
|
moves on its own. Run **Move major version tag** if you don't want to wait for the next master
|
|
281
281
|
push.
|
|
282
282
|
|
|
283
|
-
`v0` moving on every master push means `@v0` is as live as `@master` was —
|
|
284
|
-
just a gate on the package version. What the tag buys you is a
|
|
285
|
-
so repos migrate one at a time instead of all at once,
|
|
286
|
-
an earlier commit. Bump `MAJOR_TAG` in
|
|
287
|
-
major; the old tag then freezes where it is
|
|
283
|
+
`workflows-v0` moving on every master push means `@workflows-v0` is as live as `@master` was —
|
|
284
|
+
there's no staging step, just a gate on the package version. What the tag buys you is a
|
|
285
|
+
`workflows-v1` for breaking workflow changes, so repos migrate one at a time instead of all at once,
|
|
286
|
+
and a way to roll back by pointing the tag at an earlier commit. Bump `MAJOR_TAG` in
|
|
287
|
+
`.github/workflows/_move_major_tag.yaml` to cut the next major; the old tag then freezes where it is
|
|
288
|
+
and keeps working.
|
|
288
289
|
|
|
289
|
-
Freezing is real, which is the whole reason the version is pinned rather than a floor. A frozen `v0`
|
|
290
|
+
Freezing is real, which is the whole reason the version is pinned rather than a floor. A frozen `workflows-v0`
|
|
290
291
|
points at a commit whose pinned version never changes, so it keeps installing the library it was
|
|
291
292
|
tested against no matter how far the package moves on. Had the workflows installed `>=<floor>`, a
|
|
292
|
-
frozen `v0` would still resolve to whatever is newest — and since the release that enables
|
|
293
|
-
usually the same release that breaks `v0`, the migration window would
|
|
293
|
+
frozen `workflows-v0` would still resolve to whatever is newest — and since the release that enables
|
|
294
|
+
`workflows-v1` is usually the same release that breaks `workflows-v0`, the migration window would
|
|
295
|
+
have been zero.
|
|
294
296
|
|
|
295
297
|
The tag tracks the **workflows'** contract, not the npm package version. They move independently on
|
|
296
|
-
purpose, so `@v0` is expected to stay `@v0` after the package reaches 1.0 —
|
|
297
|
-
breaks its callers, not when the package does. Because `uses:` cannot take an expression, every ref
|
|
298
|
+
purpose, so `@workflows-v0` is expected to stay `@workflows-v0` after the package reaches 1.0 —
|
|
299
|
+
bump it when a workflow breaks its callers, not when the package does. Because `uses:` cannot take an expression, every ref
|
|
298
300
|
into this repo repeats the tag literally; `check-major-tag-refs.mjs` fails the build if `MAJOR_TAG`
|
|
299
301
|
and those refs disagree, which is the mistake that would otherwise ship silently during a bump.
|
|
300
302
|
|