@synopackageland/templates 0.35.3 → 0.35.5

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/README.md CHANGED
@@ -92,8 +92,8 @@ so no UI peer override is needed. Tests use jsdom 30 for UI floating-layer style
92
92
  Interactive NAS file operations use same-origin browser calls.
93
93
  Custom file handlers use the SDK's
94
94
  [session transport migration](https://github.com/synopackageland/syno-pkg-land-sdk/blob/v0.38.2/docs/dsm-session-transport.md).
95
- CLI 0.41.2 reads SDK 0.38.2's release manifest, which names immutable
96
- executor/v0.32.0 and its executor digests. Its `~0.35.2` templates
95
+ CLI 0.41.5 reads SDK 0.38.2's release manifest, which names immutable
96
+ executor/v0.38.2 and its executor digests. Its `~0.35.3` templates
97
97
  dependency selects this release.
98
98
 
99
99
  Every App method must appear in the permissions table, including methods whose
@@ -313,3 +313,22 @@ ports prefill the DSM wizard, selected values flow through the SDK-generated
313
313
  configuration and DSM service definition, and upgrades retain the selection.
314
314
  Changing ports uses reinstall. Declare `{port: gateway_https}` runtime bindings
315
315
  when an upstream application needs its public port in its own configuration.
316
+
317
+ ## App-open smoke
318
+
319
+ Every generated project includes `tests/e2e/smoke.e2e.ts`, `e2e.config.ts` and
320
+ a root `package.json`. Run `npm install` at the project root, install Chromium once with
321
+ `npx @e2e-dev/web install chromium`, then run `npm run e2e:smoke`. Set `DSM_E2E_SSH` and private mode-600 account files in
322
+ `DSM_E2E_ACCOUNT_ADMIN` and `DSM_E2E_ACCOUNT_NORMAL`; grant the normal account
323
+ Application Privileges first. Missing normal credentials/profile produces a
324
+ reported skip. Profiles reuse the existing CLI target/user cache. `.env` and
325
+ `.e2e/` stay private and untracked.
326
+
327
+ The shared CLI helper derives the launch id and entry from `dsm-package.yaml`,
328
+ checks ready content for administrator and normal users, and checks the login
329
+ gate in a fresh anonymous context. Keep a content-specific `ready` selector
330
+ (or `{text: 'Exact text'}`); wrapped upstream Apps must replace the template
331
+ marker with their own. Use `entry` only for a configured entry override. An
332
+ entry declared upstream-authenticated in the manifest also needs `publicLogin`
333
+ to identify its own login page. A DSM-gated entry cannot opt out of the gate.
334
+ This smoke checks opening only; it does not install packages or change accounts.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@synopackageland/templates",
3
- "version": "0.35.3",
3
+ "version": "0.35.5",
4
4
  "description": "Project templates for synopkgland init: native-go, native-python, native-node and native-rust (plain or Vue, with jobs, delegate and root-ops overlays), binary and compose.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -0,0 +1,3 @@
1
+ import { dsmTarget } from '@synopackageland/cli/e2e';
2
+
3
+ export default { targets: [dsmTarget()], output: '.e2e/output' };
@@ -0,0 +1,14 @@
1
+ {
2
+ "private": true,
3
+ "type": "module",
4
+ "scripts": {
5
+ "e2e:smoke": "node --env-file-if-exists=.env node_modules/@synopackageland/cli/dist/e2e/dsm.js tunnel -- e2e run tests/e2e/smoke.e2e.ts"
6
+ },
7
+ "devDependencies": {
8
+ "@synopackageland/cli": "^0.41.6",
9
+ "@e2e-dev/web": "^0.14.0",
10
+ "e2e": "^0.19.0",
11
+ "@ai-sdk/openai": "^4.0.91",
12
+ "ai": "^7.0.137"
13
+ }
14
+ }
@@ -0,0 +1,5 @@
1
+ import { appOpenSmoke } from '@synopackageland/cli/e2e';
2
+
3
+ // Keep a marker that appears only after your App has loaded its content.
4
+ // For a wrapped upstream, replace ready with its own selector or {text: '…'}.
5
+ appOpenSmoke({ ready: '[data-app-status], .dsmapp-facts dd, .binary-app, [data-app-ready]' });
@@ -1,2 +1,6 @@
1
1
  dist/
2
2
  *.spk
3
+
4
+ # Private NAS smoke sessions and credentials
5
+ .e2e/
6
+ .env
@@ -0,0 +1,5 @@
1
+ node_modules/
2
+ .e2e/
3
+ .env
4
+ dist/
5
+ *.spk
@@ -1 +1,5 @@
1
1
  dist/
2
+
3
+ # Private NAS smoke sessions and credentials
4
+ .e2e/
5
+ .env
@@ -1,2 +1,6 @@
1
1
  dist/
2
2
  node_modules/
3
+
4
+ # Private NAS smoke sessions and credentials
5
+ .e2e/
6
+ .env
@@ -2,3 +2,7 @@ dist/
2
2
  node_modules/
3
3
  backend/build/
4
4
  backend/app/*.js
5
+
6
+ # Private NAS smoke sessions and credentials
7
+ .e2e/
8
+ .env
@@ -2,3 +2,7 @@ dist/
2
2
  node_modules/
3
3
  backend/build/
4
4
  backend/app/*.js
5
+
6
+ # Private NAS smoke sessions and credentials
7
+ .e2e/
8
+ .env
@@ -1,2 +1,6 @@
1
1
  dist/
2
2
  __pycache__/
3
+
4
+ # Private NAS smoke sessions and credentials
5
+ .e2e/
6
+ .env
@@ -1,3 +1,7 @@
1
1
  dist/
2
2
  __pycache__/
3
3
  node_modules/
4
+
5
+ # Private NAS smoke sessions and credentials
6
+ .e2e/
7
+ .env
@@ -1,2 +1,6 @@
1
1
  dist/
2
2
  backend/target/
3
+
4
+ # Private NAS smoke sessions and credentials
5
+ .e2e/
6
+ .env
@@ -1,3 +1,7 @@
1
1
  dist/
2
2
  node_modules/
3
3
  backend/target/
4
+
5
+ # Private NAS smoke sessions and credentials
6
+ .e2e/
7
+ .env