@sdods/core 0.3.1 → 0.3.2

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.
@@ -90,9 +90,15 @@ export const test = base.extend({
90
90
  ],
91
91
  // ── test scope ──────────────────────────────────────────────────────────
92
92
  /**
93
- * Declared FIRST in test scope, and automatic, so it decides before anything
94
- * expensive happens before a pool account is leased, before a browser
95
- * context is built, before a session is minted.
93
+ * Automatic, and an explicit DEPENDENCY of `user` which is what actually makes
94
+ * it decide before anything expensive happens.
95
+ *
96
+ * Declaration order alone does not: Playwright instantiates fixtures in
97
+ * dependency order, and `user` is pulled in by `storageState`, which the browser
98
+ * context needs, so the pool lease happened first regardless of where the gate
99
+ * sat in the object. An `@env:local @user:noconsent` scenario on staging failed
100
+ * with `No users with role "noconsent"` instead of skipping — the gate never got
101
+ * to run. Depending on it is the only ordering guarantee Playwright offers.
96
102
  *
97
103
  * `@env:`, `@skip:<browser>` and `@flag:` were validated at LINT time and had
98
104
  * no runtime path whatsoever. That is the worst arrangement available: the
@@ -171,7 +177,11 @@ export const test = base.extend({
171
177
  }
172
178
  void apiContext;
173
179
  },
174
- user: async ({ userPool, $tags }, use, testInfo) => {
180
+ // `$sdodsTagGate` first, and it is not unused: it is here to force the ordering.
181
+ // Leasing an account for a scenario that the tag gate is about to skip burns a
182
+ // pool slot, and on a role with no rows it throws before the skip can happen.
183
+ user: async ({ $sdodsTagGate, userPool, $tags }, use, testInfo) => {
184
+ void $sdodsTagGate;
175
185
  const role = parseTagValue($tags, 'user');
176
186
  await use(role ? await userPool.lease(role, testInfo.parallelIndex) : undefined);
177
187
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sdods/core",
3
- "version": "0.3.1",
3
+ "version": "0.3.2",
4
4
  "description": "SDODS runtime: configuration, project registry, fixtures, step libraries, data providers, screenshot narratives and self-healing locators.",
5
5
  "license": "Apache-2.0",
6
6
  "author": "SDODS <admin@sdods.com>",
@@ -42,7 +42,7 @@
42
42
  "playwright-bdd": ">=9"
43
43
  },
44
44
  "dependencies": {
45
- "@sdods/contracts": "0.3.1",
45
+ "@sdods/contracts": "0.3.2",
46
46
  "@cucumber/gherkin": "^42.0.1",
47
47
  "@cucumber/messages": "^34.2.1",
48
48
  "@faker-js/faker": "^10.6.0",
@@ -58,7 +58,7 @@
58
58
  "ts-morph": "^28.0.0",
59
59
  "yaml": "^2.9.0",
60
60
  "zod": "^4.5.4",
61
- "@sdods/db": "0.3.1"
61
+ "@sdods/db": "0.3.2"
62
62
  },
63
63
  "homepage": "https://sdods.com",
64
64
  "bugs": {