@prenta/admin 1.17.3 → 1.17.4
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/CHANGELOG.md +6 -0
- package/dist/__tests__/views/admin-section-renderers.test.js +1 -0
- package/dist/__tests__/views/admin-section-renderers.test.js.map +1 -1
- package/dist/__tests__/views/article-body-section.render.test.js +7 -0
- package/dist/__tests__/views/article-body-section.render.test.js.map +1 -1
- package/dist/__tests__/views/seo-autopilot-card.render.test.js +28 -45
- package/dist/__tests__/views/seo-autopilot-card.render.test.js.map +1 -1
- package/dist/__tests__/views/updates-tab.render.test.js +6 -2
- package/dist/__tests__/views/updates-tab.render.test.js.map +1 -1
- package/dist/views/page-editor/sections/ArticleBodySection.d.ts +3 -4
- package/dist/views/page-editor/sections/ArticleBodySection.d.ts.map +1 -1
- package/dist/views/page-editor/sections/ArticleBodySection.js +6 -5
- package/dist/views/page-editor/sections/ArticleBodySection.js.map +1 -1
- package/dist/views/page-editor/sections/admin-renderers.d.ts +3 -36
- package/dist/views/page-editor/sections/admin-renderers.d.ts.map +1 -1
- package/dist/views/page-editor/sections/admin-renderers.js +5 -5
- package/dist/views/page-editor/sections/admin-renderers.js.map +1 -1
- package/package.json +3 -3
- package/src/__tests__/views/admin-section-renderers.test.tsx +1 -0
- package/src/__tests__/views/article-body-section.render.test.tsx +14 -0
- package/src/__tests__/views/seo-autopilot-card.render.test.tsx +28 -49
- package/src/__tests__/views/updates-tab.render.test.tsx +6 -2
- package/src/views/page-editor/sections/ArticleBodySection.tsx +7 -5
- package/src/views/page-editor/sections/admin-renderers.tsx +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# @actuate-media/cms-admin
|
|
2
2
|
|
|
3
|
+
## 1.17.4
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 30d88ab: Sanitize draft HTML in the admin canvas with the cms-core allow-list before it is rendered. The sanitizer is available from `@prenta/core/sanitize` so the admin bundle does not import the server barrel.
|
|
8
|
+
|
|
3
9
|
## 1.17.3
|
|
4
10
|
|
|
5
11
|
### Patch Changes
|
|
@@ -38,6 +38,7 @@ describe('pluggable admin section renderers', () => {
|
|
|
38
38
|
render(_jsx(AdminSectionRenderersProvider, { value: renderers, children: _jsx(SectionRenderer, { section: customSection() }) }));
|
|
39
39
|
const options = seen[0];
|
|
40
40
|
expect(options.sanitizeHtml('<b>x</b>')).toBe('<b>x</b>');
|
|
41
|
+
expect(options.sanitizeHtml('<p>ok</p><script>alert(1)</script>')).not.toContain('script');
|
|
41
42
|
expect(options.baseUrl).toBe('');
|
|
42
43
|
expect(screen.getByAltText('x')).toBeTruthy();
|
|
43
44
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-section-renderers.test.js","sourceRoot":"","sources":["../../../src/__tests__/views/admin-section-renderers.test.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"admin-section-renderers.test.js","sourceRoot":"","sources":["../../../src/__tests__/views/admin-section-renderers.test.tsx"],"names":[],"mappings":"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"}
|
|
@@ -20,5 +20,12 @@ describe('ArticleBodySection', () => {
|
|
|
20
20
|
expect(container.querySelector('.prenta-rich-text')).toBeTruthy();
|
|
21
21
|
expect(container.querySelector('.prose')).toBeNull();
|
|
22
22
|
});
|
|
23
|
+
it('strips script tags from draft HTML before rendering (#396)', () => {
|
|
24
|
+
const { container } = render(_jsx(ArticleBodySection, { section: section({ source: 'field' }), context: { body: '<p>Safe copy</p><script>alert(1)</script>' } }));
|
|
25
|
+
const preview = container.querySelector('.prenta-rich-text');
|
|
26
|
+
expect(preview?.querySelector('script')).toBeNull();
|
|
27
|
+
expect(preview?.innerHTML).toContain('Safe copy');
|
|
28
|
+
expect(preview?.innerHTML).not.toContain('alert');
|
|
29
|
+
});
|
|
23
30
|
});
|
|
24
31
|
//# sourceMappingURL=article-body-section.render.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"article-body-section.render.test.js","sourceRoot":"","sources":["../../../src/__tests__/views/article-body-section.render.test.tsx"],"names":[],"mappings":";AAAA,gCAAgC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,wDAAwD,CAAA;AAG3F,SAAS,OAAO,CAAC,UAAmC,EAAE;IACpD,OAAO;QACL,EAAE,EAAE,IAAI;QACR,WAAW,EAAE,cAAc;QAC3B,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,IAAI;QACb,OAAO;QACP,QAAQ,EAAE,EAAE;KACb,CAAA;AACH,CAAC;AAED,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAC1B,KAAC,kBAAkB,IACjB,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EACrC,OAAO,EAAE,EAAE,IAAI,EAAE,gDAAgD,EAAE,GACnE,CACH,CAAA;QAED,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;QAC5F,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;QACjE,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;IACtD,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"article-body-section.render.test.js","sourceRoot":"","sources":["../../../src/__tests__/views/article-body-section.render.test.tsx"],"names":[],"mappings":";AAAA,gCAAgC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,wDAAwD,CAAA;AAG3F,SAAS,OAAO,CAAC,UAAmC,EAAE;IACpD,OAAO;QACL,EAAE,EAAE,IAAI;QACR,WAAW,EAAE,cAAc;QAC3B,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,IAAI;QACb,OAAO;QACP,QAAQ,EAAE,EAAE;KACb,CAAA;AACH,CAAC;AAED,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAC1B,KAAC,kBAAkB,IACjB,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EACrC,OAAO,EAAE,EAAE,IAAI,EAAE,gDAAgD,EAAE,GACnE,CACH,CAAA;QAED,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;QAC5F,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;QACjE,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;IACtD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAC1B,KAAC,kBAAkB,IACjB,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EACrC,OAAO,EAAE,EAAE,IAAI,EAAE,2CAA2C,EAAE,GAC9D,CACH,CAAA;QAED,MAAM,OAAO,GAAG,SAAS,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAA;QAC5D,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;QACnD,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;QACjD,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;IACnD,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -124,8 +124,7 @@ describe('SeoAutopilotCard', () => {
|
|
|
124
124
|
});
|
|
125
125
|
it('a blur-commit followed immediately by a checkbox click lands two PUTs, in order', async () => {
|
|
126
126
|
render(_jsx(SeoAutopilotCard, { canEdit: true, onNavigate: () => { } }));
|
|
127
|
-
await screen.
|
|
128
|
-
const brand = screen.getByLabelText(/minimum brand alignment/i);
|
|
127
|
+
const brand = await screen.findByLabelText(/minimum brand alignment/i);
|
|
129
128
|
const checkbox = screen.getByLabelText('Missing meta title');
|
|
130
129
|
fireEvent.change(brand, { target: { value: '90' } });
|
|
131
130
|
// mousedown on the checkbox blurs the input (commit → PUT #1) and the click
|
|
@@ -145,9 +144,9 @@ describe('SeoAutopilotCard', () => {
|
|
|
145
144
|
const gate = deferred();
|
|
146
145
|
putGate = gate.promise;
|
|
147
146
|
render(_jsx(SeoAutopilotCard, { canEdit: true, onNavigate: () => { } }));
|
|
148
|
-
|
|
147
|
+
// The card region also wraps the loading skeleton; wait on a loaded control.
|
|
148
|
+
const checkbox = (await screen.findByLabelText('Missing meta title'));
|
|
149
149
|
const card = screen.getByRole('region', { name: 'SEO Autopilot' });
|
|
150
|
-
const checkbox = screen.getByLabelText('Missing meta title');
|
|
151
150
|
checkbox.focus();
|
|
152
151
|
fireEvent.click(checkbox);
|
|
153
152
|
await waitFor(() => expect(card.getAttribute('aria-busy')).toBe('true'));
|
|
@@ -165,8 +164,7 @@ describe('SeoAutopilotCard', () => {
|
|
|
165
164
|
runGate = gate.promise;
|
|
166
165
|
current = { ...SETTINGS, enabled: true, enabledById: 'a' };
|
|
167
166
|
render(_jsx(SeoAutopilotCard, { canEdit: true, onNavigate: () => { } }));
|
|
168
|
-
await screen.
|
|
169
|
-
fireEvent.click(screen.getByRole('button', { name: /run now/i }));
|
|
167
|
+
fireEvent.click(await screen.findByRole('button', { name: /run now/i }));
|
|
170
168
|
await waitFor(() => expect(cmsApi).toHaveBeenCalledWith('/seo/autopilot/run', expect.anything()));
|
|
171
169
|
fireEvent.click(screen.getByLabelText('Missing meta title'));
|
|
172
170
|
await waitFor(() => expect(toastInfo).toHaveBeenCalledTimes(1));
|
|
@@ -177,8 +175,7 @@ describe('SeoAutopilotCard', () => {
|
|
|
177
175
|
});
|
|
178
176
|
it('toggling a type PUTs a types patch', async () => {
|
|
179
177
|
render(_jsx(SeoAutopilotCard, { canEdit: true, onNavigate: () => { } }));
|
|
180
|
-
await screen.
|
|
181
|
-
fireEvent.click(screen.getByLabelText('Missing meta title'));
|
|
178
|
+
fireEvent.click(await screen.findByLabelText('Missing meta title'));
|
|
182
179
|
await waitFor(() => expect(cmsApi).toHaveBeenCalledWith('/seo/autopilot/settings', expect.objectContaining({
|
|
183
180
|
method: 'PUT',
|
|
184
181
|
body: JSON.stringify({ types: { 'missing-meta-title': true } }),
|
|
@@ -188,15 +185,13 @@ describe('SeoAutopilotCard', () => {
|
|
|
188
185
|
});
|
|
189
186
|
it('toggling the master switch PUTs { enabled }', async () => {
|
|
190
187
|
render(_jsx(SeoAutopilotCard, { canEdit: true, onNavigate: () => { } }));
|
|
191
|
-
await screen.
|
|
192
|
-
fireEvent.click(screen.getByRole('switch', { name: /enable autopilot/i }));
|
|
188
|
+
fireEvent.click(await screen.findByRole('switch', { name: /enable autopilot/i }));
|
|
193
189
|
await waitFor(() => expect(putBodies()).toEqual([{ enabled: true }]));
|
|
194
190
|
await waitFor(() => expect(screen.getByRole('switch', { name: /enable autopilot/i }).getAttribute('aria-checked')).toBe('true'));
|
|
195
191
|
});
|
|
196
192
|
it('commits a clamped threshold on blur and sends the outcome-watch ratio as a fraction', async () => {
|
|
197
193
|
render(_jsx(SeoAutopilotCard, { canEdit: true, onNavigate: () => { } }));
|
|
198
|
-
await screen.
|
|
199
|
-
const brand = screen.getByLabelText(/minimum brand alignment/i);
|
|
194
|
+
const brand = await screen.findByLabelText(/minimum brand alignment/i);
|
|
200
195
|
fireEvent.change(brand, { target: { value: '140' } });
|
|
201
196
|
fireEvent.blur(brand);
|
|
202
197
|
await waitFor(() => expect(putBodies()).toEqual([{ minBrandAlignment: 100 }]));
|
|
@@ -207,8 +202,7 @@ describe('SeoAutopilotCard', () => {
|
|
|
207
202
|
});
|
|
208
203
|
it('does not PUT when a number field is blurred unchanged or with garbage', async () => {
|
|
209
204
|
render(_jsx(SeoAutopilotCard, { canEdit: true, onNavigate: () => { } }));
|
|
210
|
-
await screen.
|
|
211
|
-
const perRun = screen.getByLabelText(/max changes per run/i);
|
|
205
|
+
const perRun = await screen.findByLabelText(/max changes per run/i);
|
|
212
206
|
fireEvent.blur(perRun);
|
|
213
207
|
fireEvent.change(perRun, { target: { value: '' } });
|
|
214
208
|
fireEvent.blur(perRun);
|
|
@@ -218,8 +212,7 @@ describe('SeoAutopilotCard', () => {
|
|
|
218
212
|
it('surfaces a PUT validation error verbatim and keeps the previous state', async () => {
|
|
219
213
|
putResponse = { error: 'maxPerRun must be an integer between 1 and 25', status: 400 };
|
|
220
214
|
render(_jsx(SeoAutopilotCard, { canEdit: true, onNavigate: () => { } }));
|
|
221
|
-
await screen.
|
|
222
|
-
fireEvent.click(screen.getByLabelText('Missing meta title'));
|
|
215
|
+
fireEvent.click(await screen.findByLabelText('Missing meta title'));
|
|
223
216
|
await waitFor(() => expect(toastError).toHaveBeenCalledWith('maxPerRun must be an integer between 1 and 25'));
|
|
224
217
|
expect(toastSuccess).not.toHaveBeenCalled();
|
|
225
218
|
expect(screen.getByLabelText('Missing meta title').checked).toBe(false);
|
|
@@ -227,8 +220,7 @@ describe('SeoAutopilotCard', () => {
|
|
|
227
220
|
it('resets a number field to the last saved value when its PUT fails', async () => {
|
|
228
221
|
putResponse = { error: 'maxPerRun must be an integer between 1 and 25', status: 400 };
|
|
229
222
|
render(_jsx(SeoAutopilotCard, { canEdit: true, onNavigate: () => { } }));
|
|
230
|
-
await screen.
|
|
231
|
-
const perRun = screen.getByLabelText(/max changes per run/i);
|
|
223
|
+
const perRun = (await screen.findByLabelText(/max changes per run/i));
|
|
232
224
|
fireEvent.change(perRun, { target: { value: '9' } });
|
|
233
225
|
fireEvent.blur(perRun);
|
|
234
226
|
await waitFor(() => expect(toastError).toHaveBeenCalledWith('maxPerRun must be an integer between 1 and 25'));
|
|
@@ -307,16 +299,14 @@ describe('SeoAutopilotCard', () => {
|
|
|
307
299
|
pausedTypes: { 'missing-meta-title': reason },
|
|
308
300
|
};
|
|
309
301
|
render(_jsx(SeoAutopilotCard, { canEdit: true, onNavigate: () => { } }));
|
|
310
|
-
await screen.
|
|
311
|
-
const list = screen.getByRole('list', { name: /paused fix types/i });
|
|
302
|
+
const list = await screen.findByRole('list', { name: /paused fix types/i });
|
|
312
303
|
expect(list.textContent ?? '').toContain(`Missing meta title — ${reason}`);
|
|
313
304
|
fireEvent.click(within(list).getByRole('button', { name: /resume/i }));
|
|
314
305
|
await waitFor(() => expect(putBodies()).toEqual([{ resumeTypes: ['missing-meta-title'] }]));
|
|
315
306
|
});
|
|
316
307
|
it('Run now is disabled while the policy is disabled and explains why', async () => {
|
|
317
308
|
render(_jsx(SeoAutopilotCard, { canEdit: true, onNavigate: () => { } }));
|
|
318
|
-
await screen.
|
|
319
|
-
const run = screen.getByRole('button', { name: /run now/i });
|
|
309
|
+
const run = (await screen.findByRole('button', { name: /run now/i }));
|
|
320
310
|
expect(run.disabled).toBe(true);
|
|
321
311
|
expect(run.getAttribute('title')).toMatch(/enable autopilot to run it now/i);
|
|
322
312
|
const hintId = run.getAttribute('aria-describedby');
|
|
@@ -332,8 +322,7 @@ describe('SeoAutopilotCard', () => {
|
|
|
332
322
|
pausedReason: 'manual',
|
|
333
323
|
};
|
|
334
324
|
render(_jsx(SeoAutopilotCard, { canEdit: true, onNavigate: () => { } }));
|
|
335
|
-
await screen.
|
|
336
|
-
const run = screen.getByRole('button', { name: /run now/i });
|
|
325
|
+
const run = (await screen.findByRole('button', { name: /run now/i }));
|
|
337
326
|
expect(run.disabled).toBe(true);
|
|
338
327
|
expect(run.getAttribute('title')).toMatch(/resume autopilot to run it now/i);
|
|
339
328
|
const hintId = run.getAttribute('aria-describedby');
|
|
@@ -342,8 +331,7 @@ describe('SeoAutopilotCard', () => {
|
|
|
342
331
|
it('Run now carries no hint once it is runnable', async () => {
|
|
343
332
|
current = { ...SETTINGS, enabled: true, enabledById: 'a' };
|
|
344
333
|
render(_jsx(SeoAutopilotCard, { canEdit: true, onNavigate: () => { } }));
|
|
345
|
-
await screen.
|
|
346
|
-
const run = screen.getByRole('button', { name: /run now/i });
|
|
334
|
+
const run = (await screen.findByRole('button', { name: /run now/i }));
|
|
347
335
|
expect(run.disabled).toBe(false);
|
|
348
336
|
expect(run.getAttribute('title')).toBeNull();
|
|
349
337
|
expect(run.getAttribute('aria-describedby')).toBeNull();
|
|
@@ -351,8 +339,7 @@ describe('SeoAutopilotCard', () => {
|
|
|
351
339
|
it('Run now POSTs /seo/autopilot/run and reloads', async () => {
|
|
352
340
|
current = { ...SETTINGS, enabled: true, enabledById: 'a' };
|
|
353
341
|
render(_jsx(SeoAutopilotCard, { canEdit: true, onNavigate: () => { } }));
|
|
354
|
-
await screen.
|
|
355
|
-
const run = screen.getByRole('button', { name: /run now/i });
|
|
342
|
+
const run = await screen.findByRole('button', { name: /run now/i });
|
|
356
343
|
expect(run.disabled).toBe(false);
|
|
357
344
|
fireEvent.click(run);
|
|
358
345
|
// Second click while in flight must not queue a second run.
|
|
@@ -378,8 +365,7 @@ describe('SeoAutopilotCard', () => {
|
|
|
378
365
|
},
|
|
379
366
|
};
|
|
380
367
|
render(_jsx(SeoAutopilotCard, { canEdit: true, onNavigate: () => { } }));
|
|
381
|
-
await screen.
|
|
382
|
-
const summary = screen.getByRole('status', { name: /last run/i });
|
|
368
|
+
const summary = await screen.findByRole('status', { name: /last run/i });
|
|
383
369
|
expect(summary.textContent ?? '').toMatch(/4 applied/);
|
|
384
370
|
expect(summary.textContent ?? '').toMatch(/1 verify-failed/);
|
|
385
371
|
expect(summary.textContent ?? '').toMatch(/2 reverted/);
|
|
@@ -395,8 +381,7 @@ describe('SeoAutopilotCard', () => {
|
|
|
395
381
|
lastRun: { ...RUN_SUMMARY, halted: true, haltedReason: 'verify_failures' },
|
|
396
382
|
};
|
|
397
383
|
render(_jsx(SeoAutopilotCard, { canEdit: true, onNavigate: () => { } }));
|
|
398
|
-
await screen.
|
|
399
|
-
const halted = screen.getByRole('status', { name: /run stopped/i });
|
|
384
|
+
const halted = await screen.findByRole('status', { name: /run stopped/i });
|
|
400
385
|
expect(halted.textContent ?? '').toMatch(/verification failures/i);
|
|
401
386
|
expect(halted.className).toContain('text-warning');
|
|
402
387
|
});
|
|
@@ -410,8 +395,7 @@ describe('SeoAutopilotCard', () => {
|
|
|
410
395
|
lastRun: { ...RUN_SUMMARY, halted: true, haltedReason: 'budget_exhausted' },
|
|
411
396
|
};
|
|
412
397
|
render(_jsx(SeoAutopilotCard, { canEdit: true, onNavigate: () => { } }));
|
|
413
|
-
await screen.
|
|
414
|
-
const halted = screen.getByRole('status', { name: /run stopped/i });
|
|
398
|
+
const halted = await screen.findByRole('status', { name: /run stopped/i });
|
|
415
399
|
expect(halted.textContent ?? '').toMatch(/ran out of time/i);
|
|
416
400
|
expect(halted.textContent ?? '').not.toMatch(/daily/i);
|
|
417
401
|
});
|
|
@@ -428,8 +412,7 @@ describe('SeoAutopilotCard', () => {
|
|
|
428
412
|
lastRun: { ...RUN_SUMMARY, halted: true, haltedReason: reason },
|
|
429
413
|
};
|
|
430
414
|
render(_jsx(SeoAutopilotCard, { canEdit: true, onNavigate: () => { } }));
|
|
431
|
-
await screen.
|
|
432
|
-
const halted = screen.getByRole('status', { name: /run stopped/i });
|
|
415
|
+
const halted = await screen.findByRole('status', { name: /run stopped/i });
|
|
433
416
|
expect(halted.textContent ?? '').toMatch(copy);
|
|
434
417
|
expect(halted.textContent ?? '').not.toMatch(/stopped with an error/i);
|
|
435
418
|
expect(halted.className).toContain('text-warning');
|
|
@@ -441,8 +424,8 @@ describe('SeoAutopilotCard', () => {
|
|
|
441
424
|
lastRunAt: new Date(Date.now() - 5 * 60_000).toISOString(),
|
|
442
425
|
};
|
|
443
426
|
render(_jsx(SeoAutopilotCard, { canEdit: true, onNavigate: () => { } }));
|
|
444
|
-
await screen.
|
|
445
|
-
expect(
|
|
427
|
+
const summary = await screen.findByRole('status', { name: /last run/i });
|
|
428
|
+
expect(summary.textContent ?? '').toMatch(/last run 5m ago/i);
|
|
446
429
|
});
|
|
447
430
|
it('offers every autopilot issue type exactly once (mirror of SEO_AUTOPILOT_ISSUE_TYPES)', () => {
|
|
448
431
|
const ids = AUTOPILOT_TYPE_GROUPS.flatMap((g) => g.options.map((o) => o.id));
|
|
@@ -452,8 +435,8 @@ describe('SeoAutopilotCard', () => {
|
|
|
452
435
|
it('read-only for non-admins', async () => {
|
|
453
436
|
current = { ...SETTINGS, enabled: true, enabledById: 'a' };
|
|
454
437
|
render(_jsx(SeoAutopilotCard, { canEdit: false, onNavigate: () => { } }));
|
|
455
|
-
await screen.
|
|
456
|
-
expect(
|
|
438
|
+
const toggle = await screen.findByRole('switch', { name: /enable autopilot/i });
|
|
439
|
+
expect(toggle.disabled).toBe(true);
|
|
457
440
|
expect(screen.getByLabelText('Missing meta title').disabled).toBe(true);
|
|
458
441
|
expect(screen.getByLabelText(/minimum brand alignment/i).disabled).toBe(true);
|
|
459
442
|
expect(screen.getByRole('button', { name: /run now/i }).disabled).toBe(true);
|
|
@@ -467,8 +450,7 @@ describe('SeoAutopilotCard', () => {
|
|
|
467
450
|
};
|
|
468
451
|
const onNavigate = vi.fn();
|
|
469
452
|
render(_jsx(SeoAutopilotCard, { canEdit: true, onNavigate: onNavigate }));
|
|
470
|
-
await screen.
|
|
471
|
-
const notice = screen.getByRole('region', { name: /governance/i });
|
|
453
|
+
const notice = await screen.findByRole('region', { name: /governance/i });
|
|
472
454
|
expect(notice.getAttribute('role')).not.toBe('status');
|
|
473
455
|
expect(notice.textContent ?? '').toMatch(/requires approval/i);
|
|
474
456
|
fireEvent.click(within(notice).getByRole('button', { name: /settings → ai/i }));
|
|
@@ -482,7 +464,9 @@ describe('SeoAutopilotCard', () => {
|
|
|
482
464
|
governance: { issueFixApprovalRequired: true, redirectApprovalRequired: false },
|
|
483
465
|
};
|
|
484
466
|
render(_jsx(SeoAutopilotCard, { canEdit: true, onNavigate: () => { } }));
|
|
485
|
-
|
|
467
|
+
// Wait on a loaded control: against the skeleton the negative check below
|
|
468
|
+
// would pass vacuously.
|
|
469
|
+
await screen.findByRole('switch', { name: /enable autopilot/i });
|
|
486
470
|
expect(screen.queryByRole('region', { name: /governance/i })).toBeNull();
|
|
487
471
|
});
|
|
488
472
|
it('keeps live regions to the last-run lines only', async () => {
|
|
@@ -497,8 +481,7 @@ describe('SeoAutopilotCard', () => {
|
|
|
497
481
|
governance: { issueFixApprovalRequired: true, redirectApprovalRequired: false },
|
|
498
482
|
};
|
|
499
483
|
render(_jsx(SeoAutopilotCard, { canEdit: true, onNavigate: () => { } }));
|
|
500
|
-
await screen.
|
|
501
|
-
const live = screen.getAllByRole('status').map((el) => el.getAttribute('aria-label'));
|
|
484
|
+
const live = (await screen.findAllByRole('status')).map((el) => el.getAttribute('aria-label'));
|
|
502
485
|
expect(live.sort()).toEqual(['Last run', 'Run stopped']);
|
|
503
486
|
});
|
|
504
487
|
it('shows an error state with Retry when settings fail to load', async () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seo-autopilot-card.render.test.js","sourceRoot":"","sources":["../../../src/__tests__/views/seo-autopilot-card.render.test.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"seo-autopilot-card.render.test.js","sourceRoot":"","sources":["../../../src/__tests__/views/seo-autopilot-card.render.test.tsx"],"names":[],"mappings":"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"}
|
|
@@ -97,7 +97,10 @@ describe('UpdatesTab', () => {
|
|
|
97
97
|
});
|
|
98
98
|
it('enables Save when the repo changes and persists via PUT /updates/config', async () => {
|
|
99
99
|
render(_jsx(UpdatesTab, { role: "ADMIN" }));
|
|
100
|
-
|
|
100
|
+
// The GitHub card renders optimistically for admins before /updates/check
|
|
101
|
+
// resolves, and that response resets the form — wait for the check to land
|
|
102
|
+
// before typing so the typed value cannot be wiped mid-test.
|
|
103
|
+
await screen.findByText("You're up to date!");
|
|
101
104
|
const save = screen.getByRole('button', { name: 'Save Changes' });
|
|
102
105
|
expect(save.disabled).toBe(true);
|
|
103
106
|
const repo = screen.getByLabelText('Repository');
|
|
@@ -111,7 +114,8 @@ describe('UpdatesTab', () => {
|
|
|
111
114
|
});
|
|
112
115
|
it('blocks Save on an invalid repository format', async () => {
|
|
113
116
|
render(_jsx(UpdatesTab, { role: "ADMIN" }));
|
|
114
|
-
|
|
117
|
+
// See above: wait for the check response, not the optimistic card heading.
|
|
118
|
+
await screen.findByText("You're up to date!");
|
|
115
119
|
const repo = screen.getByLabelText('Repository');
|
|
116
120
|
fireEvent.change(repo, { target: { value: 'not a repo' } });
|
|
117
121
|
expect(screen.getByText(/owner\/repo format/i)).toBeTruthy();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updates-tab.render.test.js","sourceRoot":"","sources":["../../../src/__tests__/views/updates-tab.render.test.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"updates-tab.render.test.js","sourceRoot":"","sources":["../../../src/__tests__/views/updates-tab.render.test.tsx"],"names":[],"mappings":"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"}
|
|
@@ -5,10 +5,9 @@ import { type PostRenderContext } from './parts.js';
|
|
|
5
5
|
* post's own Body field (passed via context); otherwise it renders the
|
|
6
6
|
* section's own `body` copy.
|
|
7
7
|
*
|
|
8
|
-
* The
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* in-progress draft; the server sanitizes (sanitize-html) on save.
|
|
8
|
+
* The canvas previews the author's in-progress draft, which has not been
|
|
9
|
+
* through the write-time sanitizer yet. Strip disallowed tags here with the
|
|
10
|
+
* cms-core allow-list before injecting HTML.
|
|
12
11
|
*/
|
|
13
12
|
export declare function ArticleBodySection({ section, context, }: {
|
|
14
13
|
section: PageSection;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArticleBodySection.d.ts","sourceRoot":"","sources":["../../../../src/views/page-editor/sections/ArticleBodySection.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ArticleBodySection.d.ts","sourceRoot":"","sources":["../../../../src/views/page-editor/sections/ArticleBodySection.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAA;AACtE,OAAO,EAAa,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAE9D;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,OAAO,EACP,OAAO,GACR,EAAE;IACD,OAAO,EAAE,WAAW,CAAA;IACpB,OAAO,CAAC,EAAE,iBAAiB,CAAA;CAC5B,2CA+BA"}
|
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { sanitizeHtml } from '@prenta/core/sanitize';
|
|
2
3
|
import { bool, str } from './parts.js';
|
|
3
4
|
/**
|
|
4
5
|
* Renders the post's main body. When `source === 'field'` it shows the
|
|
5
6
|
* post's own Body field (passed via context); otherwise it renders the
|
|
6
7
|
* section's own `body` copy.
|
|
7
8
|
*
|
|
8
|
-
* The
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* in-progress draft; the server sanitizes (sanitize-html) on save.
|
|
9
|
+
* The canvas previews the author's in-progress draft, which has not been
|
|
10
|
+
* through the write-time sanitizer yet. Strip disallowed tags here with the
|
|
11
|
+
* cms-core allow-list before injecting HTML.
|
|
12
12
|
*/
|
|
13
13
|
export function ArticleBodySection({ section, context, }) {
|
|
14
14
|
const c = section.content;
|
|
15
15
|
const source = str(c, 'source', 'field');
|
|
16
|
-
const
|
|
16
|
+
const rawHtml = source === 'field' ? (context?.body ?? '') : str(c, 'body');
|
|
17
|
+
const html = sanitizeHtml(rawHtml);
|
|
17
18
|
const wide = str(c, 'width', 'normal') === 'wide';
|
|
18
19
|
const showToc = bool(c, 'showToc');
|
|
19
20
|
return (_jsxs("div", { className: `mx-auto px-6 ${wide ? 'max-w-4xl' : 'max-w-2xl'}`, children: [showToc && (_jsxs("div", { className: "border-border bg-muted mb-8 rounded-lg border p-4", children: [_jsx("p", { className: "text-muted-foreground text-xs font-semibold tracking-wider uppercase", children: "On this page" }), _jsx("p", { className: "text-muted-foreground mt-1 text-sm", children: "A table of contents will be generated from the body headings." })] })), html.trim() ? (_jsx("div", { className: "prenta-rich-text max-w-none", dangerouslySetInnerHTML: { __html: html } })) : (_jsx("p", { className: "text-muted-foreground text-base leading-relaxed italic", children: source === 'field'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArticleBodySection.js","sourceRoot":"","sources":["../../../../src/views/page-editor/sections/ArticleBodySection.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"ArticleBodySection.js","sourceRoot":"","sources":["../../../../src/views/page-editor/sections/ArticleBodySection.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAGpD,OAAO,EAAE,IAAI,EAAE,GAAG,EAA0B,MAAM,YAAY,CAAA;AAE9D;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,EACjC,OAAO,EACP,OAAO,GAIR;IACC,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAA;IACzB,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;IACxC,MAAM,OAAO,GAAG,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;IAC3E,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,CAAA;IAClC,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,MAAM,CAAA;IACjD,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,CAAA;IAElC,OAAO,CACL,eAAK,SAAS,EAAE,gBAAgB,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,aAC/D,OAAO,IAAI,CACV,eAAK,SAAS,EAAC,mDAAmD,aAChE,YAAG,SAAS,EAAC,sEAAsE,6BAE/E,EACJ,YAAG,SAAS,EAAC,oCAAoC,8EAE7C,IACA,CACP,EACA,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CACb,cAAK,SAAS,EAAC,6BAA6B,EAAC,uBAAuB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,GAAI,CAC3F,CAAC,CAAC,CAAC,CACF,YAAG,SAAS,EAAC,wDAAwD,YAClE,MAAM,KAAK,OAAO;oBACjB,CAAC,CAAC,yCAAyC;oBAC3C,CAAC,CAAC,oCAAoC,GACtC,CACL,IACG,CACP,CAAA;AACH,CAAC"}
|
|
@@ -1,35 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Pluggable canvas renderers for the editor canvas and the eye preview.
|
|
3
|
-
*
|
|
4
|
-
* RESOLUTION ORDER — supplied renderer → built-in → placeholder.
|
|
5
|
-
*
|
|
6
|
-
* A renderer passed to `<AdminRoot sectionRenderers>` wins for EVERY section
|
|
7
|
-
* type, including the built-ins. Before v0.93 the map was consulted only for
|
|
8
|
-
* types the canvas did not already know, so a consumer passing the public
|
|
9
|
-
* renderer map had their hero, text, feature, stats and cta silently ignored
|
|
10
|
-
* while the canvas rendered the admin's own approximations — different font
|
|
11
|
-
* size, weight and breakpoints — and presented itself as a preview.
|
|
12
|
-
*
|
|
13
|
-
* With nothing supplied, built-in types fall back to those approximations and
|
|
14
|
-
* custom (config-declared) or unmanaged types render as a structural
|
|
15
|
-
* placeholder.
|
|
16
|
-
*
|
|
17
|
-
* The renderer signature is a structural mirror of `SectionRenderer` from
|
|
18
|
-
* `@prenta/sections-react` (cms-admin depends on cms-core only, so the type is
|
|
19
|
-
* duplicated rather than imported). `admin-renderer-compat.test.ts` performs
|
|
20
|
-
* the assignment that keeps the two shapes compatible.
|
|
21
|
-
*
|
|
22
|
-
* ```tsx
|
|
23
|
-
* import { DEFAULT_SECTION_RENDERERS } from '@prenta/sections-react'
|
|
24
|
-
* import { OPAL_RENDERERS } from './sections'
|
|
25
|
-
* <AdminRoot sectionRenderers={{ ...DEFAULT_SECTION_RENDERERS, ...OPAL_RENDERERS }} />
|
|
26
|
-
* ```
|
|
27
|
-
*
|
|
28
|
-
* Renderers run inside the admin bundle, so they must be client-safe (no
|
|
29
|
-
* server-only imports). Each is wrapped in an error boundary — a throwing
|
|
30
|
-
* renderer falls back to the built-in for that type, or to the placeholder if
|
|
31
|
-
* the type has no built-in, instead of taking down the editor.
|
|
32
|
-
*/
|
|
33
1
|
import { type ReactNode } from 'react';
|
|
34
2
|
/** Structural mirror of `RenderImageProps` from `@prenta/sections-react`. */
|
|
35
3
|
export interface AdminRenderImageProps {
|
|
@@ -107,10 +75,9 @@ export type AdminSectionRenderer = (props: AdminSectionRendererProps) => ReactNo
|
|
|
107
75
|
/** Section-type id → canvas renderer. */
|
|
108
76
|
export type AdminSectionRendererMap = Record<string, AdminSectionRenderer>;
|
|
109
77
|
/**
|
|
110
|
-
* Render options passed to every admin renderer.
|
|
111
|
-
*
|
|
112
|
-
*
|
|
113
|
-
* editor canvas has no next/image pipeline.
|
|
78
|
+
* Render options passed to every admin renderer. Draft HTML is sanitized
|
|
79
|
+
* with the cms-core allow-list before any renderer injects it. Images render
|
|
80
|
+
* as plain lazy `<img>` since the editor canvas has no next/image pipeline.
|
|
114
81
|
*/
|
|
115
82
|
export declare const ADMIN_RENDER_OPTIONS: AdminSectionRendererProps['options'];
|
|
116
83
|
export declare const AdminSectionRenderersProvider: import("react").Provider<AdminSectionRendererMap>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-renderers.d.ts","sourceRoot":"","sources":["../../../../src/views/page-editor/sections/admin-renderers.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"admin-renderers.d.ts","sourceRoot":"","sources":["../../../../src/views/page-editor/sections/admin-renderers.tsx"],"names":[],"mappings":"AAmCA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjE,6EAA6E;AAC7E,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,wEAAwE;AACxE,MAAM,WAAW,uBAAuB;IACtC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC5D,YAAY,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CACxE;AAED;;;;GAIG;AACH,UAAU,kBAAkB;IAC1B,KAAK,IAAI,OAAO,CAAA;IAChB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;CAC1B;AAED,kFAAkF;AAClF,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE;QACP,EAAE,EAAE,MAAM,CAAA;QACV,WAAW,EAAE,MAAM,CAAA;QACnB,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,OAAO,CAAC,EAAE,OAAO,CAAA;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QACjC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KACnC,CAAA;IACD,GAAG,CAAC,EAAE,uBAAuB,CAAA;IAC7B,OAAO,EAAE;QACP,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;QACtC,OAAO,EAAE,MAAM,CAAA;QACf,WAAW,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,SAAS,CAAA;QACxD,2CAA2C;QAC3C,GAAG,EAAE,kBAAkB,CAAA;QACvB;;;;;;;;;;;;WAYG;QAEH,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KACrC,CAAA;CACF;AAED,qDAAqD;AACrD,MAAM,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,yBAAyB,KAAK,SAAS,CAAA;AAElF,yCAAyC;AACzC,MAAM,MAAM,uBAAuB,GAAG,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAA;AAE1E;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,EAAE,yBAAyB,CAAC,SAAS,CAkBrE,CAAA;AAID,eAAO,MAAM,6BAA6B,mDAAwC,CAAA;AAElF,oFAAoF;AACpF,wBAAgB,wBAAwB,IAAI,uBAAuB,CAElE"}
|
|
@@ -32,15 +32,15 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
32
32
|
* renderer falls back to the built-in for that type, or to the placeholder if
|
|
33
33
|
* the type has no built-in, instead of taking down the editor.
|
|
34
34
|
*/
|
|
35
|
+
import { sanitizeHtml } from '@prenta/core/sanitize';
|
|
35
36
|
import { createContext, useContext } from 'react';
|
|
36
37
|
/**
|
|
37
|
-
* Render options passed to every admin renderer.
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
* editor canvas has no next/image pipeline.
|
|
38
|
+
* Render options passed to every admin renderer. Draft HTML is sanitized
|
|
39
|
+
* with the cms-core allow-list before any renderer injects it. Images render
|
|
40
|
+
* as plain lazy `<img>` since the editor canvas has no next/image pipeline.
|
|
41
41
|
*/
|
|
42
42
|
export const ADMIN_RENDER_OPTIONS = {
|
|
43
|
-
sanitizeHtml
|
|
43
|
+
sanitizeHtml,
|
|
44
44
|
baseUrl: '',
|
|
45
45
|
// Never grants the priority slot. On a public page exactly one image may
|
|
46
46
|
// load eagerly; in the canvas nothing competes for bandwidth and every
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-renderers.js","sourceRoot":"","sources":["../../../../src/views/page-editor/sections/admin-renderers.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAkB,MAAM,OAAO,CAAA;AA4EjE
|
|
1
|
+
{"version":3,"file":"admin-renderers.js","sourceRoot":"","sources":["../../../../src/views/page-editor/sections/admin-renderers.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAkB,MAAM,OAAO,CAAA;AA4EjE;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAyC;IACxE,YAAY;IACZ,OAAO,EAAE,EAAE;IACX,yEAAyE;IACzE,uEAAuE;IACvE,wDAAwD;IACxD,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE;IAC1C,eAAe,EAAE,EAAE;IACnB,WAAW,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CACjE,cACE,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,KAAK,IAAI,SAAS,EACzB,MAAM,EAAE,MAAM,IAAI,SAAS,EAC3B,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,GACtC,CACH;CACF,CAAA;AAED,MAAM,4BAA4B,GAAG,aAAa,CAA0B,EAAE,CAAC,CAAA;AAE/E,MAAM,CAAC,MAAM,6BAA6B,GAAG,4BAA4B,CAAC,QAAQ,CAAA;AAElF,oFAAoF;AACpF,MAAM,UAAU,wBAAwB;IACtC,OAAO,UAAU,CAAC,4BAA4B,CAAC,CAAA;AACjD,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prenta/admin",
|
|
3
|
-
"version": "1.17.
|
|
3
|
+
"version": "1.17.4",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -99,7 +99,7 @@
|
|
|
99
99
|
"typescript": "^5.7.0",
|
|
100
100
|
"vitest": "^4.1.0",
|
|
101
101
|
"@prenta/component-blocks": "0.3.1",
|
|
102
|
-
"@prenta/core": "7.
|
|
102
|
+
"@prenta/core": "7.2.0",
|
|
103
103
|
"@prenta/plugin-ai": "3.0.0",
|
|
104
104
|
"@prenta/plugin-blocks": "0.2.0",
|
|
105
105
|
"@prenta/plugin-commerce": "0.2.1",
|
|
@@ -107,7 +107,7 @@
|
|
|
107
107
|
"@prenta/plugin-media": "0.2.0",
|
|
108
108
|
"@prenta/plugin-navigation": "0.3.0",
|
|
109
109
|
"@prenta/plugin-seo": "1.0.0",
|
|
110
|
-
"@prenta/sections-react": "0.17.
|
|
110
|
+
"@prenta/sections-react": "0.17.45"
|
|
111
111
|
},
|
|
112
112
|
"scripts": {
|
|
113
113
|
"build": "tsc --project tsconfig.json && npx @tailwindcss/cli -i src/styles/build-input.css -o dist/prenta-admin.css --minify",
|
|
@@ -56,6 +56,7 @@ describe('pluggable admin section renderers', () => {
|
|
|
56
56
|
)
|
|
57
57
|
const options = seen[0] as { sanitizeHtml: (h: string) => string; baseUrl: string }
|
|
58
58
|
expect(options.sanitizeHtml('<b>x</b>')).toBe('<b>x</b>')
|
|
59
|
+
expect(options.sanitizeHtml('<p>ok</p><script>alert(1)</script>')).not.toContain('script')
|
|
59
60
|
expect(options.baseUrl).toBe('')
|
|
60
61
|
expect(screen.getByAltText('x')).toBeTruthy()
|
|
61
62
|
})
|
|
@@ -29,4 +29,18 @@ describe('ArticleBodySection', () => {
|
|
|
29
29
|
expect(container.querySelector('.prenta-rich-text')).toBeTruthy()
|
|
30
30
|
expect(container.querySelector('.prose')).toBeNull()
|
|
31
31
|
})
|
|
32
|
+
|
|
33
|
+
it('strips script tags from draft HTML before rendering (#396)', () => {
|
|
34
|
+
const { container } = render(
|
|
35
|
+
<ArticleBodySection
|
|
36
|
+
section={section({ source: 'field' })}
|
|
37
|
+
context={{ body: '<p>Safe copy</p><script>alert(1)</script>' }}
|
|
38
|
+
/>,
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
const preview = container.querySelector('.prenta-rich-text')
|
|
42
|
+
expect(preview?.querySelector('script')).toBeNull()
|
|
43
|
+
expect(preview?.innerHTML).toContain('Safe copy')
|
|
44
|
+
expect(preview?.innerHTML).not.toContain('alert')
|
|
45
|
+
})
|
|
32
46
|
})
|
|
@@ -137,8 +137,7 @@ describe('SeoAutopilotCard', () => {
|
|
|
137
137
|
|
|
138
138
|
it('a blur-commit followed immediately by a checkbox click lands two PUTs, in order', async () => {
|
|
139
139
|
render(<SeoAutopilotCard canEdit onNavigate={() => {}} />)
|
|
140
|
-
await screen.
|
|
141
|
-
const brand = screen.getByLabelText(/minimum brand alignment/i)
|
|
140
|
+
const brand = await screen.findByLabelText(/minimum brand alignment/i)
|
|
142
141
|
const checkbox = screen.getByLabelText('Missing meta title') as HTMLInputElement
|
|
143
142
|
fireEvent.change(brand, { target: { value: '90' } })
|
|
144
143
|
// mousedown on the checkbox blurs the input (commit → PUT #1) and the click
|
|
@@ -161,9 +160,9 @@ describe('SeoAutopilotCard', () => {
|
|
|
161
160
|
const gate = deferred()
|
|
162
161
|
putGate = gate.promise
|
|
163
162
|
render(<SeoAutopilotCard canEdit onNavigate={() => {}} />)
|
|
164
|
-
|
|
163
|
+
// The card region also wraps the loading skeleton; wait on a loaded control.
|
|
164
|
+
const checkbox = (await screen.findByLabelText('Missing meta title')) as HTMLInputElement
|
|
165
165
|
const card = screen.getByRole('region', { name: 'SEO Autopilot' })
|
|
166
|
-
const checkbox = screen.getByLabelText('Missing meta title') as HTMLInputElement
|
|
167
166
|
checkbox.focus()
|
|
168
167
|
fireEvent.click(checkbox)
|
|
169
168
|
await waitFor(() => expect(card.getAttribute('aria-busy')).toBe('true'))
|
|
@@ -184,8 +183,7 @@ describe('SeoAutopilotCard', () => {
|
|
|
184
183
|
runGate = gate.promise
|
|
185
184
|
current = { ...SETTINGS, enabled: true, enabledById: 'a' }
|
|
186
185
|
render(<SeoAutopilotCard canEdit onNavigate={() => {}} />)
|
|
187
|
-
await screen.
|
|
188
|
-
fireEvent.click(screen.getByRole('button', { name: /run now/i }))
|
|
186
|
+
fireEvent.click(await screen.findByRole('button', { name: /run now/i }))
|
|
189
187
|
await waitFor(() =>
|
|
190
188
|
expect(cmsApi).toHaveBeenCalledWith('/seo/autopilot/run', expect.anything()),
|
|
191
189
|
)
|
|
@@ -199,8 +197,7 @@ describe('SeoAutopilotCard', () => {
|
|
|
199
197
|
|
|
200
198
|
it('toggling a type PUTs a types patch', async () => {
|
|
201
199
|
render(<SeoAutopilotCard canEdit onNavigate={() => {}} />)
|
|
202
|
-
await screen.
|
|
203
|
-
fireEvent.click(screen.getByLabelText('Missing meta title'))
|
|
200
|
+
fireEvent.click(await screen.findByLabelText('Missing meta title'))
|
|
204
201
|
await waitFor(() =>
|
|
205
202
|
expect(cmsApi).toHaveBeenCalledWith(
|
|
206
203
|
'/seo/autopilot/settings',
|
|
@@ -218,8 +215,7 @@ describe('SeoAutopilotCard', () => {
|
|
|
218
215
|
|
|
219
216
|
it('toggling the master switch PUTs { enabled }', async () => {
|
|
220
217
|
render(<SeoAutopilotCard canEdit onNavigate={() => {}} />)
|
|
221
|
-
await screen.
|
|
222
|
-
fireEvent.click(screen.getByRole('switch', { name: /enable autopilot/i }))
|
|
218
|
+
fireEvent.click(await screen.findByRole('switch', { name: /enable autopilot/i }))
|
|
223
219
|
await waitFor(() => expect(putBodies()).toEqual([{ enabled: true }]))
|
|
224
220
|
await waitFor(() =>
|
|
225
221
|
expect(
|
|
@@ -230,8 +226,7 @@ describe('SeoAutopilotCard', () => {
|
|
|
230
226
|
|
|
231
227
|
it('commits a clamped threshold on blur and sends the outcome-watch ratio as a fraction', async () => {
|
|
232
228
|
render(<SeoAutopilotCard canEdit onNavigate={() => {}} />)
|
|
233
|
-
await screen.
|
|
234
|
-
const brand = screen.getByLabelText(/minimum brand alignment/i)
|
|
229
|
+
const brand = await screen.findByLabelText(/minimum brand alignment/i)
|
|
235
230
|
fireEvent.change(brand, { target: { value: '140' } })
|
|
236
231
|
fireEvent.blur(brand)
|
|
237
232
|
await waitFor(() => expect(putBodies()).toEqual([{ minBrandAlignment: 100 }]))
|
|
@@ -244,8 +239,7 @@ describe('SeoAutopilotCard', () => {
|
|
|
244
239
|
|
|
245
240
|
it('does not PUT when a number field is blurred unchanged or with garbage', async () => {
|
|
246
241
|
render(<SeoAutopilotCard canEdit onNavigate={() => {}} />)
|
|
247
|
-
await screen.
|
|
248
|
-
const perRun = screen.getByLabelText(/max changes per run/i)
|
|
242
|
+
const perRun = await screen.findByLabelText(/max changes per run/i)
|
|
249
243
|
fireEvent.blur(perRun)
|
|
250
244
|
fireEvent.change(perRun, { target: { value: '' } })
|
|
251
245
|
fireEvent.blur(perRun)
|
|
@@ -256,8 +250,7 @@ describe('SeoAutopilotCard', () => {
|
|
|
256
250
|
it('surfaces a PUT validation error verbatim and keeps the previous state', async () => {
|
|
257
251
|
putResponse = { error: 'maxPerRun must be an integer between 1 and 25', status: 400 }
|
|
258
252
|
render(<SeoAutopilotCard canEdit onNavigate={() => {}} />)
|
|
259
|
-
await screen.
|
|
260
|
-
fireEvent.click(screen.getByLabelText('Missing meta title'))
|
|
253
|
+
fireEvent.click(await screen.findByLabelText('Missing meta title'))
|
|
261
254
|
await waitFor(() =>
|
|
262
255
|
expect(toastError).toHaveBeenCalledWith('maxPerRun must be an integer between 1 and 25'),
|
|
263
256
|
)
|
|
@@ -268,8 +261,7 @@ describe('SeoAutopilotCard', () => {
|
|
|
268
261
|
it('resets a number field to the last saved value when its PUT fails', async () => {
|
|
269
262
|
putResponse = { error: 'maxPerRun must be an integer between 1 and 25', status: 400 }
|
|
270
263
|
render(<SeoAutopilotCard canEdit onNavigate={() => {}} />)
|
|
271
|
-
await screen.
|
|
272
|
-
const perRun = screen.getByLabelText(/max changes per run/i) as HTMLInputElement
|
|
264
|
+
const perRun = (await screen.findByLabelText(/max changes per run/i)) as HTMLInputElement
|
|
273
265
|
fireEvent.change(perRun, { target: { value: '9' } })
|
|
274
266
|
fireEvent.blur(perRun)
|
|
275
267
|
await waitFor(() =>
|
|
@@ -368,8 +360,7 @@ describe('SeoAutopilotCard', () => {
|
|
|
368
360
|
pausedTypes: { 'missing-meta-title': reason },
|
|
369
361
|
}
|
|
370
362
|
render(<SeoAutopilotCard canEdit onNavigate={() => {}} />)
|
|
371
|
-
await screen.
|
|
372
|
-
const list = screen.getByRole('list', { name: /paused fix types/i })
|
|
363
|
+
const list = await screen.findByRole('list', { name: /paused fix types/i })
|
|
373
364
|
expect(list.textContent ?? '').toContain(`Missing meta title — ${reason}`)
|
|
374
365
|
fireEvent.click(within(list).getByRole('button', { name: /resume/i }))
|
|
375
366
|
await waitFor(() => expect(putBodies()).toEqual([{ resumeTypes: ['missing-meta-title'] }]))
|
|
@@ -377,8 +368,7 @@ describe('SeoAutopilotCard', () => {
|
|
|
377
368
|
|
|
378
369
|
it('Run now is disabled while the policy is disabled and explains why', async () => {
|
|
379
370
|
render(<SeoAutopilotCard canEdit onNavigate={() => {}} />)
|
|
380
|
-
await screen.
|
|
381
|
-
const run = screen.getByRole('button', { name: /run now/i }) as HTMLButtonElement
|
|
371
|
+
const run = (await screen.findByRole('button', { name: /run now/i })) as HTMLButtonElement
|
|
382
372
|
expect(run.disabled).toBe(true)
|
|
383
373
|
expect(run.getAttribute('title')).toMatch(/enable autopilot to run it now/i)
|
|
384
374
|
const hintId = run.getAttribute('aria-describedby')
|
|
@@ -397,8 +387,7 @@ describe('SeoAutopilotCard', () => {
|
|
|
397
387
|
pausedReason: 'manual',
|
|
398
388
|
}
|
|
399
389
|
render(<SeoAutopilotCard canEdit onNavigate={() => {}} />)
|
|
400
|
-
await screen.
|
|
401
|
-
const run = screen.getByRole('button', { name: /run now/i }) as HTMLButtonElement
|
|
390
|
+
const run = (await screen.findByRole('button', { name: /run now/i })) as HTMLButtonElement
|
|
402
391
|
expect(run.disabled).toBe(true)
|
|
403
392
|
expect(run.getAttribute('title')).toMatch(/resume autopilot to run it now/i)
|
|
404
393
|
const hintId = run.getAttribute('aria-describedby')
|
|
@@ -410,8 +399,7 @@ describe('SeoAutopilotCard', () => {
|
|
|
410
399
|
it('Run now carries no hint once it is runnable', async () => {
|
|
411
400
|
current = { ...SETTINGS, enabled: true, enabledById: 'a' }
|
|
412
401
|
render(<SeoAutopilotCard canEdit onNavigate={() => {}} />)
|
|
413
|
-
await screen.
|
|
414
|
-
const run = screen.getByRole('button', { name: /run now/i }) as HTMLButtonElement
|
|
402
|
+
const run = (await screen.findByRole('button', { name: /run now/i })) as HTMLButtonElement
|
|
415
403
|
expect(run.disabled).toBe(false)
|
|
416
404
|
expect(run.getAttribute('title')).toBeNull()
|
|
417
405
|
expect(run.getAttribute('aria-describedby')).toBeNull()
|
|
@@ -420,8 +408,7 @@ describe('SeoAutopilotCard', () => {
|
|
|
420
408
|
it('Run now POSTs /seo/autopilot/run and reloads', async () => {
|
|
421
409
|
current = { ...SETTINGS, enabled: true, enabledById: 'a' }
|
|
422
410
|
render(<SeoAutopilotCard canEdit onNavigate={() => {}} />)
|
|
423
|
-
await screen.
|
|
424
|
-
const run = screen.getByRole('button', { name: /run now/i })
|
|
411
|
+
const run = await screen.findByRole('button', { name: /run now/i })
|
|
425
412
|
expect((run as HTMLButtonElement).disabled).toBe(false)
|
|
426
413
|
fireEvent.click(run)
|
|
427
414
|
// Second click while in flight must not queue a second run.
|
|
@@ -457,8 +444,7 @@ describe('SeoAutopilotCard', () => {
|
|
|
457
444
|
},
|
|
458
445
|
}
|
|
459
446
|
render(<SeoAutopilotCard canEdit onNavigate={() => {}} />)
|
|
460
|
-
await screen.
|
|
461
|
-
const summary = screen.getByRole('status', { name: /last run/i })
|
|
447
|
+
const summary = await screen.findByRole('status', { name: /last run/i })
|
|
462
448
|
expect(summary.textContent ?? '').toMatch(/4 applied/)
|
|
463
449
|
expect(summary.textContent ?? '').toMatch(/1 verify-failed/)
|
|
464
450
|
expect(summary.textContent ?? '').toMatch(/2 reverted/)
|
|
@@ -475,8 +461,7 @@ describe('SeoAutopilotCard', () => {
|
|
|
475
461
|
lastRun: { ...RUN_SUMMARY, halted: true, haltedReason: 'verify_failures' },
|
|
476
462
|
}
|
|
477
463
|
render(<SeoAutopilotCard canEdit onNavigate={() => {}} />)
|
|
478
|
-
await screen.
|
|
479
|
-
const halted = screen.getByRole('status', { name: /run stopped/i })
|
|
464
|
+
const halted = await screen.findByRole('status', { name: /run stopped/i })
|
|
480
465
|
expect(halted.textContent ?? '').toMatch(/verification failures/i)
|
|
481
466
|
expect(halted.className).toContain('text-warning')
|
|
482
467
|
})
|
|
@@ -491,8 +476,7 @@ describe('SeoAutopilotCard', () => {
|
|
|
491
476
|
lastRun: { ...RUN_SUMMARY, halted: true, haltedReason: 'budget_exhausted' },
|
|
492
477
|
}
|
|
493
478
|
render(<SeoAutopilotCard canEdit onNavigate={() => {}} />)
|
|
494
|
-
await screen.
|
|
495
|
-
const halted = screen.getByRole('status', { name: /run stopped/i })
|
|
479
|
+
const halted = await screen.findByRole('status', { name: /run stopped/i })
|
|
496
480
|
expect(halted.textContent ?? '').toMatch(/ran out of time/i)
|
|
497
481
|
expect(halted.textContent ?? '').not.toMatch(/daily/i)
|
|
498
482
|
})
|
|
@@ -510,8 +494,7 @@ describe('SeoAutopilotCard', () => {
|
|
|
510
494
|
lastRun: { ...RUN_SUMMARY, halted: true, haltedReason: reason },
|
|
511
495
|
}
|
|
512
496
|
render(<SeoAutopilotCard canEdit onNavigate={() => {}} />)
|
|
513
|
-
await screen.
|
|
514
|
-
const halted = screen.getByRole('status', { name: /run stopped/i })
|
|
497
|
+
const halted = await screen.findByRole('status', { name: /run stopped/i })
|
|
515
498
|
expect(halted.textContent ?? '').toMatch(copy)
|
|
516
499
|
expect(halted.textContent ?? '').not.toMatch(/stopped with an error/i)
|
|
517
500
|
expect(halted.className).toContain('text-warning')
|
|
@@ -524,10 +507,8 @@ describe('SeoAutopilotCard', () => {
|
|
|
524
507
|
lastRunAt: new Date(Date.now() - 5 * 60_000).toISOString(),
|
|
525
508
|
}
|
|
526
509
|
render(<SeoAutopilotCard canEdit onNavigate={() => {}} />)
|
|
527
|
-
await screen.
|
|
528
|
-
expect(
|
|
529
|
-
/last run 5m ago/i,
|
|
530
|
-
)
|
|
510
|
+
const summary = await screen.findByRole('status', { name: /last run/i })
|
|
511
|
+
expect(summary.textContent ?? '').toMatch(/last run 5m ago/i)
|
|
531
512
|
})
|
|
532
513
|
|
|
533
514
|
it('offers every autopilot issue type exactly once (mirror of SEO_AUTOPILOT_ISSUE_TYPES)', () => {
|
|
@@ -539,10 +520,8 @@ describe('SeoAutopilotCard', () => {
|
|
|
539
520
|
it('read-only for non-admins', async () => {
|
|
540
521
|
current = { ...SETTINGS, enabled: true, enabledById: 'a' }
|
|
541
522
|
render(<SeoAutopilotCard canEdit={false} onNavigate={() => {}} />)
|
|
542
|
-
await screen.
|
|
543
|
-
expect(
|
|
544
|
-
(screen.getByRole('switch', { name: /enable autopilot/i }) as HTMLInputElement).disabled,
|
|
545
|
-
).toBe(true)
|
|
523
|
+
const toggle = await screen.findByRole('switch', { name: /enable autopilot/i })
|
|
524
|
+
expect((toggle as HTMLInputElement).disabled).toBe(true)
|
|
546
525
|
expect((screen.getByLabelText('Missing meta title') as HTMLInputElement).disabled).toBe(true)
|
|
547
526
|
expect((screen.getByLabelText(/minimum brand alignment/i) as HTMLInputElement).disabled).toBe(
|
|
548
527
|
true,
|
|
@@ -561,8 +540,7 @@ describe('SeoAutopilotCard', () => {
|
|
|
561
540
|
}
|
|
562
541
|
const onNavigate = vi.fn()
|
|
563
542
|
render(<SeoAutopilotCard canEdit onNavigate={onNavigate} />)
|
|
564
|
-
await screen.
|
|
565
|
-
const notice = screen.getByRole('region', { name: /governance/i })
|
|
543
|
+
const notice = await screen.findByRole('region', { name: /governance/i })
|
|
566
544
|
expect(notice.getAttribute('role')).not.toBe('status')
|
|
567
545
|
expect(notice.textContent ?? '').toMatch(/requires approval/i)
|
|
568
546
|
fireEvent.click(within(notice).getByRole('button', { name: /settings → ai/i }))
|
|
@@ -577,7 +555,9 @@ describe('SeoAutopilotCard', () => {
|
|
|
577
555
|
governance: { issueFixApprovalRequired: true, redirectApprovalRequired: false },
|
|
578
556
|
}
|
|
579
557
|
render(<SeoAutopilotCard canEdit onNavigate={() => {}} />)
|
|
580
|
-
|
|
558
|
+
// Wait on a loaded control: against the skeleton the negative check below
|
|
559
|
+
// would pass vacuously.
|
|
560
|
+
await screen.findByRole('switch', { name: /enable autopilot/i })
|
|
581
561
|
expect(screen.queryByRole('region', { name: /governance/i })).toBeNull()
|
|
582
562
|
})
|
|
583
563
|
|
|
@@ -593,8 +573,7 @@ describe('SeoAutopilotCard', () => {
|
|
|
593
573
|
governance: { issueFixApprovalRequired: true, redirectApprovalRequired: false },
|
|
594
574
|
}
|
|
595
575
|
render(<SeoAutopilotCard canEdit onNavigate={() => {}} />)
|
|
596
|
-
await screen.
|
|
597
|
-
const live = screen.getAllByRole('status').map((el) => el.getAttribute('aria-label'))
|
|
576
|
+
const live = (await screen.findAllByRole('status')).map((el) => el.getAttribute('aria-label'))
|
|
598
577
|
expect(live.sort()).toEqual(['Last run', 'Run stopped'])
|
|
599
578
|
})
|
|
600
579
|
|
|
@@ -110,7 +110,10 @@ describe('UpdatesTab', () => {
|
|
|
110
110
|
|
|
111
111
|
it('enables Save when the repo changes and persists via PUT /updates/config', async () => {
|
|
112
112
|
render(<UpdatesTab role="ADMIN" />)
|
|
113
|
-
|
|
113
|
+
// The GitHub card renders optimistically for admins before /updates/check
|
|
114
|
+
// resolves, and that response resets the form — wait for the check to land
|
|
115
|
+
// before typing so the typed value cannot be wiped mid-test.
|
|
116
|
+
await screen.findByText("You're up to date!")
|
|
114
117
|
|
|
115
118
|
const save = screen.getByRole('button', { name: 'Save Changes' }) as HTMLButtonElement
|
|
116
119
|
expect(save.disabled).toBe(true)
|
|
@@ -133,7 +136,8 @@ describe('UpdatesTab', () => {
|
|
|
133
136
|
|
|
134
137
|
it('blocks Save on an invalid repository format', async () => {
|
|
135
138
|
render(<UpdatesTab role="ADMIN" />)
|
|
136
|
-
|
|
139
|
+
// See above: wait for the check response, not the optimistic card heading.
|
|
140
|
+
await screen.findByText("You're up to date!")
|
|
137
141
|
|
|
138
142
|
const repo = screen.getByLabelText('Repository') as HTMLInputElement
|
|
139
143
|
fireEvent.change(repo, { target: { value: 'not a repo' } })
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { sanitizeHtml } from '@prenta/core/sanitize'
|
|
2
|
+
|
|
1
3
|
import type { PageSection } from '../../../lib/page-editor-service.js'
|
|
2
4
|
import { bool, str, type PostRenderContext } from './parts.js'
|
|
3
5
|
|
|
@@ -6,10 +8,9 @@ import { bool, str, type PostRenderContext } from './parts.js'
|
|
|
6
8
|
* post's own Body field (passed via context); otherwise it renders the
|
|
7
9
|
* section's own `body` copy.
|
|
8
10
|
*
|
|
9
|
-
* The
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* in-progress draft; the server sanitizes (sanitize-html) on save.
|
|
11
|
+
* The canvas previews the author's in-progress draft, which has not been
|
|
12
|
+
* through the write-time sanitizer yet. Strip disallowed tags here with the
|
|
13
|
+
* cms-core allow-list before injecting HTML.
|
|
13
14
|
*/
|
|
14
15
|
export function ArticleBodySection({
|
|
15
16
|
section,
|
|
@@ -20,7 +21,8 @@ export function ArticleBodySection({
|
|
|
20
21
|
}) {
|
|
21
22
|
const c = section.content
|
|
22
23
|
const source = str(c, 'source', 'field')
|
|
23
|
-
const
|
|
24
|
+
const rawHtml = source === 'field' ? (context?.body ?? '') : str(c, 'body')
|
|
25
|
+
const html = sanitizeHtml(rawHtml)
|
|
24
26
|
const wide = str(c, 'width', 'normal') === 'wide'
|
|
25
27
|
const showToc = bool(c, 'showToc')
|
|
26
28
|
|
|
@@ -32,6 +32,7 @@
|
|
|
32
32
|
* renderer falls back to the built-in for that type, or to the placeholder if
|
|
33
33
|
* the type has no built-in, instead of taking down the editor.
|
|
34
34
|
*/
|
|
35
|
+
import { sanitizeHtml } from '@prenta/core/sanitize'
|
|
35
36
|
import { createContext, useContext, type ReactNode } from 'react'
|
|
36
37
|
|
|
37
38
|
/** Structural mirror of `RenderImageProps` from `@prenta/sections-react`. */
|
|
@@ -109,13 +110,12 @@ export type AdminSectionRenderer = (props: AdminSectionRendererProps) => ReactNo
|
|
|
109
110
|
export type AdminSectionRendererMap = Record<string, AdminSectionRenderer>
|
|
110
111
|
|
|
111
112
|
/**
|
|
112
|
-
* Render options passed to every admin renderer.
|
|
113
|
-
*
|
|
114
|
-
*
|
|
115
|
-
* editor canvas has no next/image pipeline.
|
|
113
|
+
* Render options passed to every admin renderer. Draft HTML is sanitized
|
|
114
|
+
* with the cms-core allow-list before any renderer injects it. Images render
|
|
115
|
+
* as plain lazy `<img>` since the editor canvas has no next/image pipeline.
|
|
116
116
|
*/
|
|
117
117
|
export const ADMIN_RENDER_OPTIONS: AdminSectionRendererProps['options'] = {
|
|
118
|
-
sanitizeHtml
|
|
118
|
+
sanitizeHtml,
|
|
119
119
|
baseUrl: '',
|
|
120
120
|
// Never grants the priority slot. On a public page exactly one image may
|
|
121
121
|
// load eagerly; in the canvas nothing competes for bandwidth and every
|