@@ -38,7 +38,7 @@ const defaultNewsletterProps: NewsletterProps = {
3838 variant : 'article' ,
3939}
4040
41- const newsletterVariants : NewsletterProps [ 'variant' ] [ ] = [ 'article' , 'home' ]
41+ const newsletterVariants : NewsletterProps [ 'variant' ] [ ] = [ 'article' , 'home' , 'page' ]
4242
4343const getElements = ( root : NewsletterFormElement ) => {
4444 const selectElement = < T extends Element > ( selector : string ) : T => {
@@ -55,6 +55,7 @@ const getElements = (root: NewsletterFormElement) => {
5555 form : selectElement < HTMLFormElement > ( '#newsletter-form' ) ,
5656 emailLabel : selectElement < HTMLLabelElement > ( '#newsletter-email-label' ) ,
5757 emailInput : selectElement < HTMLInputElement > ( '#newsletter-email' ) ,
58+ websiteUrlInput : selectElement < HTMLInputElement > ( '#newsletter-website_url' ) ,
5859 consentCheckbox : selectElement < HTMLInputElement > ( '#newsletter-gdpr-consent' ) ,
5960 submitButton : selectElement < HTMLButtonElement > ( '#newsletter-submit' ) ,
6061 buttonText : selectElement < HTMLSpanElement > ( '#button-text' ) ,
@@ -113,6 +114,7 @@ describe.each(newsletterVariants)('NewsletterFormElement web component (%s)', va
113114 expect ( elements . description . id ) . toBe ( 'newsletter-cta-' + variant + '-description' )
114115 expect ( elements . form . id ) . toBe ( 'newsletter-form' )
115116 expect ( elements . emailInput . id ) . toBe ( 'newsletter-email' )
117+ expect ( elements . websiteUrlInput . name ) . toBe ( 'website_url' )
116118 expect ( elements . consentCheckbox . id ) . toBe ( 'newsletter-gdpr-consent' )
117119
118120 expect ( elements . title . textContent ) . toContain ( defaultNewsletterProps . title )
@@ -194,6 +196,27 @@ describe.each(newsletterVariants)('NewsletterFormElement web component (%s)', va
194196 } )
195197 } )
196198
199+ test ( 'forwards the honeypot field when it is filled' , async ( ) => {
200+ newsletterSubscribeMock . mockResolvedValueOnce ( {
201+ data : { success : true , message : 'Please check your email to confirm your subscription.' } ,
202+ } )
203+
204+ await renderNewsletter ( async ( { elements } ) => {
205+ elements . emailInput . value = 'test@example.com'
206+ elements . websiteUrlInput . value = 'https://spam.example'
207+ elements . consentCheckbox . checked = true
208+
209+ elements . form . dispatchEvent ( new Event ( 'submit' , { bubbles : true , cancelable : true } ) )
210+ await flushPromises ( )
211+
212+ expect ( newsletterSubscribeMock ) . toHaveBeenCalledWith ( {
213+ email : 'test@example.com' ,
214+ 'website_url' : 'https://spam.example' ,
215+ consentGiven : true ,
216+ } )
217+ } )
218+ } )
219+
197220 test ( 'handles API error responses gracefully' , async ( ) => {
198221 newsletterSubscribeMock . mockResolvedValueOnce ( {
199222 error : { message : 'Subscription failed' } ,
0 commit comments