site-builder: pin non-relay byte-identity on the realistic (non-empty fields) case [PR #2 review]
This commit is contained in:
@@ -23,4 +23,21 @@ describe('ContactForm.toHtml relay wiring', () => {
|
||||
// Backward-compat: ensure non-relay output is byte-identical (no extra blank lines from honeypot)
|
||||
expect(html).not.toMatch(/<form[^>]*>\n\s*\n/);
|
||||
});
|
||||
|
||||
test('without recipientEmail + real fields: byte-clean legacy output (realistic case)', () => {
|
||||
// The empty-fields case is NOT byte-identical to the old code (the old
|
||||
// template emitted a stray whitespace line when fields was empty; the new
|
||||
// ternary drops it). Real forms always have fields, so pin THAT scenario:
|
||||
// no marker, no honeypot, and no whitespace-only line between <form> and
|
||||
// the first field.
|
||||
const fields = [{ type: 'text', label: 'Name', name: 'name', placeholder: 'Your name', required: true }];
|
||||
const { html } = toHtml({ formAction: '/legacy', fields }, '');
|
||||
expect(html).not.toContain('WHP-FORM');
|
||||
expect(html).not.toContain('_gotcha');
|
||||
expect(html).toContain('action="/legacy"');
|
||||
expect(html).not.toMatch(/<form[^>]*>\n\s*\n/);
|
||||
// First field renders directly after the form tag (no stray blank line).
|
||||
expect(html).toMatch(/<form[^>]*>\n\s*<div/);
|
||||
expect(html).toContain('Name');
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user