@verdaccio/e2e-ui 2.5.0 → 2.7.0
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/build/cjs/features.cjs +58 -1
- package/build/cjs/features.cjs.map +1 -1
- package/build/cjs/index.cjs +20 -0
- package/build/cjs/index.cjs.map +1 -1
- package/build/cjs/tasks/publish.cjs +5 -4
- package/build/cjs/tasks/publish.cjs.map +1 -1
- package/build/cjs/testIds.cjs +16 -1
- package/build/cjs/testIds.cjs.map +1 -1
- package/build/cjs/tests/change-password.cjs +1 -2
- package/build/cjs/tests/change-password.cjs.map +1 -1
- package/build/cjs/tests/detail.cjs +106 -0
- package/build/cjs/tests/detail.cjs.map +1 -0
- package/build/cjs/tests/failure-modes.cjs +97 -0
- package/build/cjs/tests/failure-modes.cjs.map +1 -0
- package/build/cjs/tests/i18n-keys.cjs +74 -0
- package/build/cjs/tests/i18n-keys.cjs.map +1 -0
- package/build/cjs/tests/index.cjs +26 -0
- package/build/cjs/tests/manifest-rendering.cjs +73 -0
- package/build/cjs/tests/manifest-rendering.cjs.map +1 -0
- package/build/cjs/tests/session.cjs +49 -0
- package/build/cjs/tests/session.cjs.map +1 -0
- package/build/cjs/tests/settings.cjs +28 -0
- package/build/cjs/tests/settings.cjs.map +1 -1
- package/build/cjs/tests/signup.cjs +56 -0
- package/build/cjs/tests/signup.cjs.map +1 -0
- package/build/esm/features.js +58 -1
- package/build/esm/features.js.map +1 -1
- package/build/esm/index.js +15 -1
- package/build/esm/index.js.map +1 -1
- package/build/esm/tasks/publish.js +5 -4
- package/build/esm/tasks/publish.js.map +1 -1
- package/build/esm/testIds.js +16 -1
- package/build/esm/testIds.js.map +1 -1
- package/build/esm/tests/change-password.js +1 -2
- package/build/esm/tests/change-password.js.map +1 -1
- package/build/esm/tests/detail.js +106 -0
- package/build/esm/tests/detail.js.map +1 -0
- package/build/esm/tests/failure-modes.js +97 -0
- package/build/esm/tests/failure-modes.js.map +1 -0
- package/build/esm/tests/i18n-keys.js +74 -0
- package/build/esm/tests/i18n-keys.js.map +1 -0
- package/build/esm/tests/index.js +14 -0
- package/build/esm/tests/manifest-rendering.js +73 -0
- package/build/esm/tests/manifest-rendering.js.map +1 -0
- package/build/esm/tests/session.js +49 -0
- package/build/esm/tests/session.js.map +1 -0
- package/build/esm/tests/settings.js +28 -0
- package/build/esm/tests/settings.js.map +1 -1
- package/build/esm/tests/signup.js +56 -0
- package/build/esm/tests/signup.js.map +1 -0
- package/build/features.d.ts +139 -0
- package/build/index.d.ts +1 -1
- package/build/tasks/publish.d.ts +9 -0
- package/build/testIds.d.ts +18 -0
- package/build/tests/detail.d.ts +12 -0
- package/build/tests/failure-modes.d.ts +11 -0
- package/build/tests/i18n-keys.d.ts +2 -0
- package/build/tests/index.d.ts +6 -0
- package/build/tests/manifest-rendering.d.ts +14 -0
- package/build/tests/session.d.ts +2 -0
- package/build/tests/signup.d.ts +12 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signup.js","names":[],"sources":["../../../src/tests/signup.ts"],"sourcesContent":["/// <reference types=\"cypress\" />\nimport { maybeIt } from '../features';\nimport { RegistryConfig } from '../types';\n\n/**\n * Create-user (web signup) tests.\n *\n * Requires the server flag `createUser: true` (the /-/web/add-user page\n * redirects home without it) and the fixed signup form from\n * verdaccio/verdaccio#6210 — every published ui-theme posted to\n * `PUT /-/web/add-user:<user>`, a URL that only serves the SPA, so the\n * form could never succeed. That is exactly why this suite exists: the\n * bug lived for months because no e2e ever clicked through the flow.\n */\nexport function signupTests(config: RegistryConfig) {\n const { features } = config;\n const { signup } = config.selectors;\n\n describe('signup (create user)', () => {\n beforeEach(() => {\n cy.visit(`${config.registryUrl}/-/web/add-user`);\n cy.get('body').should('be.visible');\n });\n\n maybeIt(features.signup.happyPath)(\n 'should create a user through the real signup endpoint and land on success',\n () => {\n const username = `e2e-signup-${Date.now()}`;\n\n cy.intercept('PUT', '/-/verdaccio/sec/signup').as('signup');\n\n cy.get(signup.usernameInput).type(username);\n cy.get(signup.passwordInput).type('e2e-password');\n cy.get(signup.emailInput).type(`${username}@example.com`);\n cy.get(signup.submitButton).should('not.be.disabled').click();\n\n // Wire contract: the request must carry name/password/email and\n // the 36-char sessionId the endpoint validates before anything.\n cy.wait('@signup', { timeout: 10000 }).then((interception: any) => {\n const body = interception.request.body;\n expect(body.name).to.eq(username);\n expect(body.email).to.eq(`${username}@example.com`);\n expect(body.sessionId).to.be.a('string').with.length(36);\n expect(interception.response?.statusCode).to.be.oneOf([200, 201]);\n });\n\n cy.location('pathname', { timeout: 10000 }).should('contain', '/-/web/success');\n }\n );\n\n maybeIt(features.signup.validation)(\n 'an invalid email must show a visible message and keep submit disabled',\n () => {\n cy.get(signup.usernameInput).type('e2e-validation-user');\n cy.get(signup.passwordInput).type('e2e-password');\n cy.get(signup.emailInput).type('not-an-email');\n\n cy.get(signup.submitButton).should('be.disabled');\n // The reason must be visible, not a silently disabled button.\n cy.get(signup.emailInput)\n .closest('div.MuiFormControl-root')\n .find('.MuiFormHelperText-root')\n .should('be.visible')\n .and('not.be.empty');\n }\n );\n\n maybeIt(features.signup.validation)(\n 'a username with spaces must block submit with a visible message',\n () => {\n cy.get(signup.usernameInput).type('user name');\n cy.get(signup.passwordInput).type('e2e-password');\n cy.get(signup.emailInput).type('valid@example.com');\n\n cy.get(signup.submitButton).should('be.disabled');\n cy.get(signup.usernameInput)\n .closest('div.MuiFormControl-root')\n .find('.MuiFormHelperText-root')\n .should('be.visible')\n .and('not.be.empty');\n }\n );\n });\n}\n"],"mappings":";;;;;;;;;;;;AAcA,SAAgB,YAAY,QAAwB;CAClD,MAAM,EAAE,aAAa;CACrB,MAAM,EAAE,WAAW,OAAO;CAE1B,SAAS,8BAA8B;EACrC,iBAAiB;GACf,GAAG,MAAM,GAAG,OAAO,YAAY,gBAAgB;GAC/C,GAAG,IAAI,MAAM,CAAC,CAAC,OAAO,YAAY;EACpC,CAAC;EAED,QAAQ,SAAS,OAAO,SAAS,CAAC,CAChC,mFACM;GACJ,MAAM,WAAW,cAAc,KAAK,IAAI;GAExC,GAAG,UAAU,OAAO,yBAAyB,CAAC,CAAC,GAAG,QAAQ;GAE1D,GAAG,IAAI,OAAO,aAAa,CAAC,CAAC,KAAK,QAAQ;GAC1C,GAAG,IAAI,OAAO,aAAa,CAAC,CAAC,KAAK,cAAc;GAChD,GAAG,IAAI,OAAO,UAAU,CAAC,CAAC,KAAK,GAAG,SAAS,aAAa;GACxD,GAAG,IAAI,OAAO,YAAY,CAAC,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM;GAI5D,GAAG,KAAK,WAAW,EAAE,SAAS,IAAM,CAAC,CAAC,CAAC,MAAM,iBAAsB;IACjE,MAAM,OAAO,aAAa,QAAQ;IAClC,OAAO,KAAK,IAAI,CAAC,CAAC,GAAG,GAAG,QAAQ;IAChC,OAAO,KAAK,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,SAAS,aAAa;IAClD,OAAO,KAAK,SAAS,CAAC,CAAC,GAAG,GAAG,EAAE,QAAQ,CAAC,CAAC,KAAK,OAAO,EAAE;IACvD,OAAO,aAAa,UAAU,UAAU,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC;GAClE,CAAC;GAED,GAAG,SAAS,YAAY,EAAE,SAAS,IAAM,CAAC,CAAC,CAAC,OAAO,WAAW,gBAAgB;EAChF,CACF;EAEA,QAAQ,SAAS,OAAO,UAAU,CAAC,CACjC,+EACM;GACJ,GAAG,IAAI,OAAO,aAAa,CAAC,CAAC,KAAK,qBAAqB;GACvD,GAAG,IAAI,OAAO,aAAa,CAAC,CAAC,KAAK,cAAc;GAChD,GAAG,IAAI,OAAO,UAAU,CAAC,CAAC,KAAK,cAAc;GAE7C,GAAG,IAAI,OAAO,YAAY,CAAC,CAAC,OAAO,aAAa;GAEhD,GAAG,IAAI,OAAO,UAAU,CAAC,CACtB,QAAQ,yBAAyB,CAAC,CAClC,KAAK,yBAAyB,CAAC,CAC/B,OAAO,YAAY,CAAC,CACpB,IAAI,cAAc;EACvB,CACF;EAEA,QAAQ,SAAS,OAAO,UAAU,CAAC,CACjC,yEACM;GACJ,GAAG,IAAI,OAAO,aAAa,CAAC,CAAC,KAAK,WAAW;GAC7C,GAAG,IAAI,OAAO,aAAa,CAAC,CAAC,KAAK,cAAc;GAChD,GAAG,IAAI,OAAO,UAAU,CAAC,CAAC,KAAK,mBAAmB;GAElD,GAAG,IAAI,OAAO,YAAY,CAAC,CAAC,OAAO,aAAa;GAChD,GAAG,IAAI,OAAO,aAAa,CAAC,CACzB,QAAQ,yBAAyB,CAAC,CAClC,KAAK,yBAAyB,CAAC,CAC/B,OAAO,YAAY,CAAC,CACpB,IAAI,cAAc;EACvB,CACF;CACF,CAAC;AACH"}
|
package/build/features.d.ts
CHANGED
|
@@ -46,6 +46,13 @@ export interface Features {
|
|
|
46
46
|
* builds that lag behind the upstream translation file.
|
|
47
47
|
*/
|
|
48
48
|
languageSwitcher: boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Whether to assert that dates follow the selected language
|
|
51
|
+
* (dayjs locale). Released UIs never load the dayjs locale, so
|
|
52
|
+
* relative dates stay English in every language (fixed in
|
|
53
|
+
* verdaccio/verdaccio#6210) — probe.
|
|
54
|
+
*/
|
|
55
|
+
localizedDates: boolean;
|
|
49
56
|
};
|
|
50
57
|
signin: {
|
|
51
58
|
/**
|
|
@@ -87,6 +94,138 @@ export interface Features {
|
|
|
87
94
|
*/
|
|
88
95
|
rawViewer: boolean;
|
|
89
96
|
};
|
|
97
|
+
detail: {
|
|
98
|
+
/**
|
|
99
|
+
* Whether to run the "visiting /v/<version> pins that version" test
|
|
100
|
+
* (asserts the sidebar request carries `?v=<version>`).
|
|
101
|
+
*/
|
|
102
|
+
versionPinned: boolean;
|
|
103
|
+
/**
|
|
104
|
+
* Whether to run the wire-format test for scoped packages: the UI
|
|
105
|
+
* must request `/-/verdaccio/data/sidebar/@scope/name` with the `@`
|
|
106
|
+
* and `/` literal (npm registry convention), never `%40`-encoded.
|
|
107
|
+
* Pins the regression caught by these suites in
|
|
108
|
+
* verdaccio/verdaccio#6210.
|
|
109
|
+
*/
|
|
110
|
+
scopedWireFormat: boolean;
|
|
111
|
+
/**
|
|
112
|
+
* Whether to run the "nonexistent version renders Not Found" test.
|
|
113
|
+
* Requires the server to answer 404 for unknown `?v=` values
|
|
114
|
+
* (verdaccio/verdaccio#6210); released lines silently fall back to
|
|
115
|
+
* `latest`, so this defaults to `false` as a probe.
|
|
116
|
+
*/
|
|
117
|
+
versionNotFound: boolean;
|
|
118
|
+
/**
|
|
119
|
+
* Whether to run the "versions tab shows the CURRENT package after
|
|
120
|
+
* SPA navigation" test. The detail routes reuse one mounted
|
|
121
|
+
* component, and released UIs cache the previous package's versions
|
|
122
|
+
* in local state (fixed in verdaccio/verdaccio#6210) — defaults to
|
|
123
|
+
* `false` as a probe.
|
|
124
|
+
*/
|
|
125
|
+
staleVersionsNavigation: boolean;
|
|
126
|
+
};
|
|
127
|
+
manifestRendering: {
|
|
128
|
+
/**
|
|
129
|
+
* Whether to run the string-form manifest tests: `repository`,
|
|
130
|
+
* `funding` and `bugs` in their string/array forms are valid npm
|
|
131
|
+
* and must render (fixed in verdaccio/verdaccio#6210) — probe.
|
|
132
|
+
*/
|
|
133
|
+
stringForms: boolean;
|
|
134
|
+
/**
|
|
135
|
+
* Whether to assert gravatar avatars render on the detail sidebar.
|
|
136
|
+
* Released UIs read `avatar` while the sidebar endpoint sends
|
|
137
|
+
* `_avatar` (fixed in verdaccio/verdaccio#6210) — probe.
|
|
138
|
+
*/
|
|
139
|
+
gravatarAvatars: boolean;
|
|
140
|
+
/**
|
|
141
|
+
* Whether to assert contributors without email don't collapse into
|
|
142
|
+
* one (fixed in verdaccio/verdaccio#6210) — probe.
|
|
143
|
+
*/
|
|
144
|
+
developersWithoutEmail: boolean;
|
|
145
|
+
};
|
|
146
|
+
session: {
|
|
147
|
+
/**
|
|
148
|
+
* Whether to assert that an expired token in localStorage boots the
|
|
149
|
+
* UI logged out (header shows the login button). Holds on every
|
|
150
|
+
* released line.
|
|
151
|
+
*/
|
|
152
|
+
expiredTokenLoggedOut: boolean;
|
|
153
|
+
/**
|
|
154
|
+
* Whether to assert the expired token is also PURGED from
|
|
155
|
+
* localStorage on boot — otherwise the api client keeps attaching
|
|
156
|
+
* it (fixed in verdaccio/verdaccio#6210) — probe.
|
|
157
|
+
*/
|
|
158
|
+
expiredTokenPurged: boolean;
|
|
159
|
+
};
|
|
160
|
+
failureModes: {
|
|
161
|
+
/**
|
|
162
|
+
* Whether to run the "backend 5xx on the package list must not
|
|
163
|
+
* render the empty-registry onboarding" test. Holds on every line
|
|
164
|
+
* (a 5xx carries an HTTP code the UI always treated as an error).
|
|
165
|
+
*/
|
|
166
|
+
homeServerError: boolean;
|
|
167
|
+
/**
|
|
168
|
+
* Whether to run the network-failure variant (request never
|
|
169
|
+
* reaches the server). Released UIs treat a network failure as an
|
|
170
|
+
* empty registry and show the onboarding card
|
|
171
|
+
* (verdaccio/verdaccio#6210 fixes it), so this defaults to `false`
|
|
172
|
+
* as a probe.
|
|
173
|
+
*/
|
|
174
|
+
homeNetworkError: boolean;
|
|
175
|
+
/**
|
|
176
|
+
* Whether to run the "5xx on the detail page renders an error
|
|
177
|
+
* state instead of a blank page" test. Requires the generic error
|
|
178
|
+
* page from verdaccio/verdaccio#6210; released UIs render blank,
|
|
179
|
+
* so this defaults to `false` as a probe.
|
|
180
|
+
*/
|
|
181
|
+
detailErrorState: boolean;
|
|
182
|
+
/**
|
|
183
|
+
* Whether to run the "search 5xx shows an error, not 'no results
|
|
184
|
+
* found'" test. The error state ships with verdaccio/verdaccio#6210
|
|
185
|
+
* — probe.
|
|
186
|
+
*/
|
|
187
|
+
searchError: boolean;
|
|
188
|
+
/**
|
|
189
|
+
* Whether to run the "failed tarball download shows an error
|
|
190
|
+
* snackbar" test — clicking download and having nothing happen sent
|
|
191
|
+
* users retrying blindly (fixed in verdaccio/verdaccio#6210) — probe.
|
|
192
|
+
*/
|
|
193
|
+
downloadError: boolean;
|
|
194
|
+
};
|
|
195
|
+
i18n: {
|
|
196
|
+
/**
|
|
197
|
+
* Whether to scan the home and detail pages for raw i18n keys
|
|
198
|
+
* (visible text like `sidebar.detail.version`). Holds on every
|
|
199
|
+
* released line — these pages ship fully translated.
|
|
200
|
+
*/
|
|
201
|
+
noRawKeysCorePages: boolean;
|
|
202
|
+
/**
|
|
203
|
+
* Whether to scan the security pages (login dialog, /-/web/login,
|
|
204
|
+
* add-user, change-password) for raw i18n keys. The whole
|
|
205
|
+
* `security.*` namespace is missing from every published ui-theme
|
|
206
|
+
* bundle (fixed in verdaccio/verdaccio#6210), so this defaults to
|
|
207
|
+
* `false` as a probe.
|
|
208
|
+
*/
|
|
209
|
+
noRawKeysSecurityPages: boolean;
|
|
210
|
+
};
|
|
211
|
+
signup: {
|
|
212
|
+
/**
|
|
213
|
+
* Whether to run the create-user happy path (fill the form on
|
|
214
|
+
* /-/web/add-user, submit, land on the success page) and assert
|
|
215
|
+
* the wire contract: `PUT /-/verdaccio/sec/signup` with a 36-char
|
|
216
|
+
* `sessionId`. Requires the server flag `createUser: true` AND the
|
|
217
|
+
* fixed signup form from verdaccio/verdaccio#6210 — every
|
|
218
|
+
* published ui-theme posts to a URL that only serves the SPA, so
|
|
219
|
+
* this defaults to `false` as a probe.
|
|
220
|
+
*/
|
|
221
|
+
happyPath: boolean;
|
|
222
|
+
/**
|
|
223
|
+
* Whether to run the client-side validation tests on the add-user
|
|
224
|
+
* form (invalid email shows a message, url-unsafe username blocks
|
|
225
|
+
* submit). Same requirements as `happyPath`.
|
|
226
|
+
*/
|
|
227
|
+
validation: boolean;
|
|
228
|
+
};
|
|
90
229
|
changePassword: {
|
|
91
230
|
/**
|
|
92
231
|
* Whether to run the happy-path test (submit valid change,
|
package/build/index.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ export type { Features } from './features';
|
|
|
6
6
|
export { DEFAULT_SELECTORS, DEFAULT_TEST_IDS } from './testIds';
|
|
7
7
|
export { DEFAULT_FEATURES, maybeIt } from './features';
|
|
8
8
|
export { publishPackage, cleanupPublished, unpublishPackage } from './tasks';
|
|
9
|
-
export { homeTests, signinTests, publishTests, searchTests, settingsTests, layoutTests, changePasswordTests, } from './tests';
|
|
9
|
+
export { homeTests, signinTests, publishTests, searchTests, settingsTests, layoutTests, changePasswordTests, detailTests, failureModeTests, i18nKeyTests, manifestRenderingTests, sessionTests, signupTests, } from './tests';
|
|
10
10
|
/**
|
|
11
11
|
* Build a full RegistryConfig from user-provided options with defaults.
|
|
12
12
|
*
|
package/build/tasks/publish.d.ts
CHANGED
|
@@ -8,6 +8,15 @@ export interface PublishPackageInput {
|
|
|
8
8
|
};
|
|
9
9
|
dependencies?: Record<string, string>;
|
|
10
10
|
devDependencies?: Record<string, string>;
|
|
11
|
+
/**
|
|
12
|
+
* Extra fields merged into the generated package.json AFTER the
|
|
13
|
+
* defaults, so fixtures can carry arbitrary manifest shapes: a string
|
|
14
|
+
* `repository`, a `funding` array, `contributors` without email, a
|
|
15
|
+
* non-string `homepage`… — exactly the field forms npm accepts on
|
|
16
|
+
* publish but UIs tend to mishandle. `name`, `version` and
|
|
17
|
+
* `publishConfig` always win over this override.
|
|
18
|
+
*/
|
|
19
|
+
manifest?: Record<string, unknown>;
|
|
11
20
|
/**
|
|
12
21
|
* When true, append a timestamp suffix to the version so reruns against
|
|
13
22
|
* a persistent registry don't collide on 403. The suffix is a valid
|
package/build/testIds.d.ts
CHANGED
|
@@ -116,6 +116,14 @@ export interface TestIds {
|
|
|
116
116
|
/** Close button inside the raw viewer dialog. */
|
|
117
117
|
closeRawViewer: string;
|
|
118
118
|
};
|
|
119
|
+
errors: {
|
|
120
|
+
/**
|
|
121
|
+
* Generic error page shown when a data request fails without a
|
|
122
|
+
* specific status (5xx, network failure). Added by
|
|
123
|
+
* verdaccio/verdaccio#6210 — only present on builds with that fix.
|
|
124
|
+
*/
|
|
125
|
+
genericError: string;
|
|
126
|
+
};
|
|
119
127
|
}
|
|
120
128
|
/**
|
|
121
129
|
* CSS selectors (not data-testids) used by the test suites. These are
|
|
@@ -133,6 +141,16 @@ export interface Selectors {
|
|
|
133
141
|
/** Submit button inside the login dialog. */
|
|
134
142
|
submitButton: string;
|
|
135
143
|
};
|
|
144
|
+
signup: {
|
|
145
|
+
/** Username input on /-/web/add-user (shares ids with the login form). */
|
|
146
|
+
usernameInput: string;
|
|
147
|
+
/** Password input on /-/web/add-user. */
|
|
148
|
+
passwordInput: string;
|
|
149
|
+
/** Email input on /-/web/add-user (only email-typed input on the page). */
|
|
150
|
+
emailInput: string;
|
|
151
|
+
/** Submit button on /-/web/add-user. */
|
|
152
|
+
submitButton: string;
|
|
153
|
+
};
|
|
136
154
|
}
|
|
137
155
|
/**
|
|
138
156
|
* Defaults matching Verdaccio 6.x (bundled ui-theme@9.0.0-next-9.x).
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { RegistryConfig } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Package detail page tests: version-pinned URLs and the wire format of
|
|
4
|
+
* the UI's data requests.
|
|
5
|
+
*
|
|
6
|
+
* The wire format is an observable contract, not an implementation
|
|
7
|
+
* detail: proxies, intercepts and every npm client expect scoped names
|
|
8
|
+
* as literal `/@scope/name`. A ui-components refactor that
|
|
9
|
+
* percent-encoded the `@` broke exactly these suites
|
|
10
|
+
* (verdaccio/verdaccio#6210), which is why it is pinned here on purpose.
|
|
11
|
+
*/
|
|
12
|
+
export declare function detailTests(config: RegistryConfig): void;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { RegistryConfig } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Failure-mode tests: what the UI shows when the backend misbehaves.
|
|
4
|
+
*
|
|
5
|
+
* A registry that is down must never look like a healthy empty registry
|
|
6
|
+
* (that invites the user to publish into the void), and a failed detail
|
|
7
|
+
* request must render an error state instead of a blank page. These are
|
|
8
|
+
* the failure classes fixed by verdaccio/verdaccio#6210 — the strict
|
|
9
|
+
* assertions are feature-gated probes until that ships.
|
|
10
|
+
*/
|
|
11
|
+
export declare function failureModeTests(config: RegistryConfig): void;
|
package/build/tests/index.d.ts
CHANGED
|
@@ -5,3 +5,9 @@ export { searchTests } from './search';
|
|
|
5
5
|
export { settingsTests } from './settings';
|
|
6
6
|
export { layoutTests } from './layout';
|
|
7
7
|
export { changePasswordTests } from './change-password';
|
|
8
|
+
export { detailTests } from './detail';
|
|
9
|
+
export { failureModeTests } from './failure-modes';
|
|
10
|
+
export { i18nKeyTests } from './i18n-keys';
|
|
11
|
+
export { signupTests } from './signup';
|
|
12
|
+
export { manifestRenderingTests } from './manifest-rendering';
|
|
13
|
+
export { sessionTests } from './session';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { RegistryConfig } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Manifest-shape rendering tests.
|
|
4
|
+
*
|
|
5
|
+
* npm does not validate these fields on publish: `repository`, `funding`
|
|
6
|
+
* and `bugs` are all valid in string form, `funding` also as an array,
|
|
7
|
+
* and contributors commonly ship without an email. Real packuments carry
|
|
8
|
+
* all of these — the UI must render them instead of silently dropping
|
|
9
|
+
* whole sections (the bug family fixed in verdaccio/verdaccio#6210,
|
|
10
|
+
* where every probe here failed).
|
|
11
|
+
*
|
|
12
|
+
* Requires the `manifest` override support in the publishPackage task.
|
|
13
|
+
*/
|
|
14
|
+
export declare function manifestRenderingTests(config: RegistryConfig): void;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { RegistryConfig } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Create-user (web signup) tests.
|
|
4
|
+
*
|
|
5
|
+
* Requires the server flag `createUser: true` (the /-/web/add-user page
|
|
6
|
+
* redirects home without it) and the fixed signup form from
|
|
7
|
+
* verdaccio/verdaccio#6210 — every published ui-theme posted to
|
|
8
|
+
* `PUT /-/web/add-user:<user>`, a URL that only serves the SPA, so the
|
|
9
|
+
* form could never succeed. That is exactly why this suite exists: the
|
|
10
|
+
* bug lived for months because no e2e ever clicked through the flow.
|
|
11
|
+
*/
|
|
12
|
+
export declare function signupTests(config: RegistryConfig): void;
|