@comicrelief/component-library 8.74.2 → 8.75.1

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.
Files changed (61) hide show
  1. package/dist/index.cjs.js +578 -573
  2. package/dist/index.es.js +5423 -5368
  3. package/package.json +1 -1
  4. package/src/components/Atoms/AmbientVideo/AmbientVideo.js +4 -3
  5. package/src/components/Atoms/Button/Button.js +1 -1
  6. package/src/components/Atoms/Button/Button.test.js +1 -0
  7. package/src/components/Atoms/ButtonWithStates/ButtonWithStates.js +2 -2
  8. package/src/components/Atoms/Confetti/Confetti.js +1 -1
  9. package/src/components/Atoms/Icons/IconsExample.jsx +2 -1
  10. package/src/components/Atoms/Icons/Post.js +37 -0
  11. package/src/components/Atoms/Icons/index.js +1 -0
  12. package/src/components/Atoms/Icons/post.svg +3 -0
  13. package/src/components/Atoms/InfoMessage/__snapshots__/InfoMessage.test.js.snap +0 -1
  14. package/src/components/Atoms/Link/Link.style.js +0 -1
  15. package/src/components/Atoms/Link/Link.test.js +0 -3
  16. package/src/components/Atoms/Pagination/Pagination.js +1 -0
  17. package/src/components/Atoms/Pagination/__snapshots__/Pagination.test.js.snap +110 -0
  18. package/src/components/Atoms/Picture/Picture.js +4 -0
  19. package/src/components/Atoms/Picture/Picture.test.js +4 -0
  20. package/src/components/Atoms/SocialIcons/SocialIcons.js +2 -2
  21. package/src/components/Atoms/SocialIcons/__snapshots__/SocialIcons.test.js.snap +15 -0
  22. package/src/components/Atoms/TextInputWithDropdown/TextInputWithDropdown.js +6 -1
  23. package/src/components/Atoms/TextInputWithDropdown/__snapshots__/TextInputWithDropdown.test.js.snap +12 -0
  24. package/src/components/Molecules/ArticleTeaser/ArticleTeaser.test.js +4 -2
  25. package/src/components/Molecules/Box/__snapshots__/Box.test.js.snap +2 -0
  26. package/src/components/Molecules/CTA/CTAMultiCard/CTAMultiCard.js +4 -2
  27. package/src/components/Molecules/CTA/CTAMultiCard/__snapshots__/CTAMultiCard.test.js.snap +40 -4
  28. package/src/components/Molecules/CTA/CTASingleCard/CTASingleCard.js +2 -1
  29. package/src/components/Molecules/CTA/CTASingleCard/__snapshots__/CTASingleCard.test.js.snap +6 -2
  30. package/src/components/Molecules/Card/Card.js +3 -1
  31. package/src/components/Molecules/Card/__snapshots__/Card.test.js.snap +8 -0
  32. package/src/components/Molecules/CardDs/__snapshots__/CardDs.test.js.snap +4 -0
  33. package/src/components/Molecules/Countdown/Countdown.js +5 -5
  34. package/src/components/Molecules/Descriptor/Descriptor.test.js +221 -221
  35. package/src/components/Molecules/DoubleCopy/DoubleCopy.js +3 -3
  36. package/src/components/Molecules/DoubleCopy/DoubleCopy.test.js +3 -0
  37. package/src/components/Molecules/EmailSignUp/EmailSignUp.js +8 -7
  38. package/src/components/Molecules/HeroBanner/__snapshots__/HeroBanner.test.js.snap +8 -0
  39. package/src/components/Molecules/InfoBanner/__snapshots__/InfoBanner.test.js.snap +0 -1
  40. package/src/components/Molecules/PartnerLink/PartnerLink.test.js +2 -1
  41. package/src/components/Molecules/PictureOrVideo/__snapshots__/PictureOrVideo.test.js.snap +10 -0
  42. package/src/components/Molecules/Promo/__snapshots__/Promo.test.js.snap +4 -0
  43. package/src/components/Molecules/SchoolLookup/__snapshots__/SchoolLookup.test.js.snap +2 -0
  44. package/src/components/Molecules/SearchResult/__snapshots__/SearchResult.test.js.snap +8 -4
  45. package/src/components/Molecules/SingleMessage/__snapshots__/SingleMessage.test.js.snap +12 -0
  46. package/src/components/Molecules/SingleMessageDS/__snapshots__/SingleMessageDs.test.js.snap +2 -0
  47. package/src/components/Molecules/StatsSlice/StatsSlice.js +2 -1
  48. package/src/components/Molecules/StatsSlice/_StatNode.js +7 -6
  49. package/src/components/Molecules/StatsSlice/__snapshots__/StatsSlice.test.js.snap +28 -0
  50. package/src/components/Molecules/Typeahead/__snapshots__/Typeahead.test.js.snap +2 -0
  51. package/src/components/Organisms/CookieBanner/CookieBanner.test.js +0 -1
  52. package/src/components/Organisms/DynamicGallery/DynamicGallery.js +4 -3
  53. package/src/components/Organisms/DynamicGallery/_DynamicGalleryColumn.js +4 -2
  54. package/src/components/Organisms/DynamicGallery/_Lightbox.js +11 -8
  55. package/src/components/Organisms/DynamicGallery/__snapshots__/DynamicGallery.test.js.snap +56 -10
  56. package/src/components/Organisms/EmailBanner/__snapshots__/EmailBanner.test.js.snap +8 -0
  57. package/src/components/Organisms/EmailSignUp/__snapshots__/EmailSignUp.test.js.snap +2 -0
  58. package/src/components/Organisms/Footer/__snapshots__/Footer.test.js.snap +5 -1
  59. package/src/components/Organisms/FooterNew/__snapshots__/FooterNew.test.js.snap +62 -24
  60. package/src/components/Organisms/Membership/Membership.test.js +2 -0
  61. package/src/index.js +2 -0
@@ -106,11 +106,13 @@ exports[`renders AmbientVideo when video props are provided correctly 1`] = `
106
106
 
107
107
  <div
108
108
  className="c0 c1"
109
+ data-testid="AmbientVideoWrapper"
109
110
  >
110
111
  <video
111
112
  autoPlay={true}
112
113
  className="c2"
113
114
  controls={false}
115
+ data-testid="AmbientVideo"
114
116
  loop={true}
115
117
  muted={true}
116
118
  onEnded={[Function]}
@@ -143,12 +145,14 @@ exports[`renders AmbientVideo when video props are provided correctly 1`] = `
143
145
  aria-label="Pause"
144
146
  className="c5 c6"
145
147
  data-play-pause="pause"
148
+ data-testid="PlayPauseButton"
146
149
  onClick={[Function]}
147
150
  type="button"
148
151
  >
149
152
  <span
150
153
  aria-hidden={true}
151
154
  className="c7 c8"
155
+ data-testid="PlayPauseIcon"
152
156
  />
153
157
  </button>
154
158
  </div>
@@ -171,6 +175,7 @@ exports[`renders Picture with flat props correctly 1`] = `
171
175
 
172
176
  <div
173
177
  className="c0 lazyload"
178
+ data-testid="PictureWrapper"
174
179
  >
175
180
  <img
176
181
  alt="Image alt text"
@@ -179,6 +184,7 @@ exports[`renders Picture with flat props correctly 1`] = `
179
184
  data-sizes="auto"
180
185
  data-src="http://images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg"
181
186
  data-srcset="//images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg?w=200&h=150&q=50 200w,//images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg?w=400&h=300&q=50 400w,//images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg?w=800&h=600&q=50 800w,//images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg?w=1200&h=900&q=50 1200w,//images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg?w=1440&h=1080&q=50 1440w"
187
+ data-testid="Picture"
182
188
  src="http://images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg"
183
189
  srcSet="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
184
190
  />
@@ -202,6 +208,7 @@ exports[`renders Picture with image object correctly 1`] = `
202
208
 
203
209
  <div
204
210
  className="c0 lazyload"
211
+ data-testid="PictureWrapper"
205
212
  >
206
213
  <img
207
214
  alt="Background image"
@@ -210,6 +217,7 @@ exports[`renders Picture with image object correctly 1`] = `
210
217
  data-sizes="auto"
211
218
  data-src="http://images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg"
212
219
  data-srcset="//images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg?w=200&h=150&q=50 200w,//images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg?w=400&h=300&q=50 400w,//images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg?w=800&h=600&q=50 800w,//images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg?w=1200&h=900&q=50 1200w,//images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg?w=1440&h=1080&q=50 1440w"
220
+ data-testid="Picture"
213
221
  src="http://images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg"
214
222
  srcSet="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
215
223
  />
@@ -245,6 +253,7 @@ exports[`renders with asBackground correctly 1`] = `
245
253
  >
246
254
  <div
247
255
  className="c1 lazyload"
256
+ data-testid="PictureWrapper"
248
257
  >
249
258
  <img
250
259
  alt="Background image"
@@ -253,6 +262,7 @@ exports[`renders with asBackground correctly 1`] = `
253
262
  data-sizes="auto"
254
263
  data-src="http://images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg"
255
264
  data-srcset="//images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg?w=200&h=150&q=50 200w,//images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg?w=400&h=300&q=50 400w,//images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg?w=800&h=600&q=50 800w,//images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg?w=1200&h=900&q=50 1200w,//images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg?w=1440&h=1080&q=50 1440w"
265
+ data-testid="Picture"
256
266
  src="http://images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg"
257
267
  srcSet="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
258
268
  />
@@ -255,6 +255,7 @@ exports[`renders Promo correctly 1`] = `
255
255
  >
256
256
  <div
257
257
  className="c2 lazyload"
258
+ data-testid="PictureWrapper"
258
259
  >
259
260
  <img
260
261
  alt=""
@@ -263,6 +264,7 @@ exports[`renders Promo correctly 1`] = `
263
264
  data-sizes="auto"
264
265
  data-src="mock.asset"
265
266
  data-srcset="mock.asset"
267
+ data-testid="Picture"
266
268
  src="mock.asset"
267
269
  srcSet="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
268
270
  />
@@ -567,6 +569,7 @@ exports[`renders Promo correctly end position 1`] = `
567
569
  >
568
570
  <div
569
571
  className="c2 lazyload"
572
+ data-testid="PictureWrapper"
570
573
  >
571
574
  <img
572
575
  alt=""
@@ -575,6 +578,7 @@ exports[`renders Promo correctly end position 1`] = `
575
578
  data-sizes="auto"
576
579
  data-src="mock.asset"
577
580
  data-srcset="mock.asset"
581
+ data-testid="Picture"
578
582
  src="mock.asset"
579
583
  srcSet="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
580
584
  />
@@ -121,6 +121,7 @@ exports[`renders correctly 1`] = `
121
121
 
122
122
  <div
123
123
  className="c0 TextInputWithDropdown"
124
+ data-testid="TextInputWithDropdownContainer"
124
125
  onKeyDown={[Function]}
125
126
  >
126
127
  <label
@@ -145,6 +146,7 @@ exports[`renders correctly 1`] = `
145
146
  aria-required={false}
146
147
  autoComplete="off"
147
148
  className="c6"
149
+ data-testid="TextInputWithDropdownInput"
148
150
  defaultValue=""
149
151
  id="school-lookup"
150
152
  name="school-lookup"
@@ -44,7 +44,6 @@ exports[`renders correctly in minimalist form 1`] = `
44
44
  display: inline;
45
45
  color: #000000;
46
46
  font-weight: normal;
47
- color: #E52630;
48
47
  }
49
48
 
50
49
  .c1:hover,
@@ -166,11 +165,13 @@ exports[`renders correctly in minimalist form 1`] = `
166
165
  >
167
166
  <div
168
167
  className="c4"
168
+ data-testid="PictureWrapper"
169
169
  >
170
170
  <img
171
171
  alt="Image's description"
172
172
  className="c5 lazyload"
173
173
  data-src={null}
174
+ data-testid="Picture"
174
175
  />
175
176
  </div>
176
177
  </div>
@@ -255,7 +256,6 @@ exports[`renders correctly with copy 1`] = `
255
256
  display: inline;
256
257
  color: #000000;
257
258
  font-weight: normal;
258
- color: #E52630;
259
259
  }
260
260
 
261
261
  .c1:hover,
@@ -391,11 +391,13 @@ exports[`renders correctly with copy 1`] = `
391
391
  >
392
392
  <div
393
393
  className="c4"
394
+ data-testid="PictureWrapper"
394
395
  >
395
396
  <img
396
397
  alt="Image's description"
397
398
  className="c5 lazyload"
398
399
  data-src={null}
400
+ data-testid="Picture"
399
401
  />
400
402
  </div>
401
403
  </div>
@@ -466,7 +468,6 @@ exports[`renders correctly with date 1`] = `
466
468
  display: inline;
467
469
  color: #000000;
468
470
  font-weight: normal;
469
- color: #E52630;
470
471
  }
471
472
 
472
473
  .c1:hover,
@@ -588,11 +589,13 @@ exports[`renders correctly with date 1`] = `
588
589
  >
589
590
  <div
590
591
  className="c4"
592
+ data-testid="PictureWrapper"
591
593
  >
592
594
  <img
593
595
  alt="Image's description"
594
596
  className="c5 lazyload"
595
597
  data-src={null}
598
+ data-testid="Picture"
596
599
  />
597
600
  </div>
598
601
  </div>
@@ -658,7 +661,6 @@ exports[`renders correctly with date and type 1`] = `
658
661
  display: inline;
659
662
  color: #000000;
660
663
  font-weight: normal;
661
- color: #E52630;
662
664
  }
663
665
 
664
666
  .c1:hover,
@@ -780,11 +782,13 @@ exports[`renders correctly with date and type 1`] = `
780
782
  >
781
783
  <div
782
784
  className="c4"
785
+ data-testid="PictureWrapper"
783
786
  >
784
787
  <img
785
788
  alt="Image's description"
786
789
  className="c5 lazyload"
787
790
  data-src={null}
791
+ data-testid="Picture"
788
792
  />
789
793
  </div>
790
794
  </div>
@@ -144,6 +144,7 @@ exports[`renders Single Message with 100% vertical height image correctly 1`] =
144
144
  >
145
145
  <div
146
146
  className="c3 lazyload"
147
+ data-testid="PictureWrapper"
147
148
  >
148
149
  <img
149
150
  alt=""
@@ -152,6 +153,7 @@ exports[`renders Single Message with 100% vertical height image correctly 1`] =
152
153
  data-sizes="auto"
153
154
  data-src="http://images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg"
154
155
  data-srcset="//images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg?w=200&h=150&q=50 200w,//images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg?w=400&h=300&q=50 400w,//images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg?w=800&h=600&q=50 800w,//images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg?w=1200&h=900&q=50 1200w,//images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg?w=1440&h=1080&q=50 1440w"
156
+ data-testid="Picture"
155
157
  src="http://images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg"
156
158
  srcSet="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
157
159
  />
@@ -402,6 +404,7 @@ exports[`renders Single Message with Image correctly 1`] = `
402
404
  >
403
405
  <div
404
406
  className="c3 lazyload"
407
+ data-testid="PictureWrapper"
405
408
  >
406
409
  <img
407
410
  alt=""
@@ -410,6 +413,7 @@ exports[`renders Single Message with Image correctly 1`] = `
410
413
  data-sizes="auto"
411
414
  data-src="http://images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg"
412
415
  data-srcset="//images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg?w=200&h=150&q=50 200w,//images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg?w=400&h=300&q=50 400w,//images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg?w=800&h=600&q=50 800w,//images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg?w=1200&h=900&q=50 1200w,//images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg?w=1440&h=1080&q=50 1440w"
416
+ data-testid="Picture"
413
417
  src="http://images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg"
414
418
  srcSet="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
415
419
  />
@@ -580,6 +584,7 @@ exports[`renders Single Message with double image correctly 1`] = `
580
584
  >
581
585
  <div
582
586
  className="c3 lazyload"
587
+ data-testid="PictureWrapper"
583
588
  >
584
589
  <img
585
590
  alt=""
@@ -588,6 +593,7 @@ exports[`renders Single Message with double image correctly 1`] = `
588
593
  data-sizes="auto"
589
594
  data-src="http://images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg"
590
595
  data-srcset="//images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg?w=200&h=150&q=50 200w,//images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg?w=400&h=300&q=50 400w,//images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg?w=800&h=600&q=50 800w,//images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg?w=1200&h=900&q=50 1200w,//images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg?w=1440&h=1080&q=50 1440w"
596
+ data-testid="Picture"
591
597
  src="http://images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg"
592
598
  srcSet="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
593
599
  />
@@ -598,6 +604,7 @@ exports[`renders Single Message with double image correctly 1`] = `
598
604
  >
599
605
  <div
600
606
  className="c3 lazyload"
607
+ data-testid="PictureWrapper"
601
608
  >
602
609
  <img
603
610
  alt=""
@@ -606,6 +613,7 @@ exports[`renders Single Message with double image correctly 1`] = `
606
613
  data-sizes="auto"
607
614
  data-src="http://images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg"
608
615
  data-srcset="//images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg?w=200&h=150&q=50 200w,//images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg?w=400&h=300&q=50 400w,//images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg?w=800&h=600&q=50 800w,//images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg?w=1200&h=900&q=50 1200w,//images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg?w=1440&h=1080&q=50 1440w"
616
+ data-testid="Picture"
609
617
  src="http://images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg"
610
618
  srcSet="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
611
619
  />
@@ -876,6 +884,7 @@ exports[`renders Single Message with full width correctly 1`] = `
876
884
  >
877
885
  <div
878
886
  className="c3 lazyload"
887
+ data-testid="PictureWrapper"
879
888
  >
880
889
  <img
881
890
  alt=""
@@ -884,6 +893,7 @@ exports[`renders Single Message with full width correctly 1`] = `
884
893
  data-sizes="auto"
885
894
  data-src="http://images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg"
886
895
  data-srcset="//images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg?w=200&h=150&q=50 200w,//images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg?w=400&h=300&q=50 400w,//images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg?w=800&h=600&q=50 800w,//images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg?w=1200&h=900&q=50 1200w,//images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg?w=1440&h=1080&q=50 1440w"
896
+ data-testid="Picture"
887
897
  src="http://images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg"
888
898
  srcSet="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
889
899
  />
@@ -1002,6 +1012,7 @@ exports[`renders Single Message with full width image and no text correctly 1`]
1002
1012
  >
1003
1013
  <div
1004
1014
  className="c3 lazyload"
1015
+ data-testid="PictureWrapper"
1005
1016
  >
1006
1017
  <img
1007
1018
  alt=""
@@ -1010,6 +1021,7 @@ exports[`renders Single Message with full width image and no text correctly 1`]
1010
1021
  data-sizes="auto"
1011
1022
  data-src="http://images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg"
1012
1023
  data-srcset="//images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg?w=200&h=150&q=50 200w,//images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg?w=400&h=300&q=50 400w,//images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg?w=800&h=600&q=50 800w,//images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg?w=1200&h=900&q=50 1200w,//images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg?w=1440&h=1080&q=50 1440w"
1024
+ data-testid="Picture"
1013
1025
  src="http://images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg"
1014
1026
  srcSet="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
1015
1027
  />
@@ -288,6 +288,7 @@ exports[`renders correctly 1`] = `
288
288
  >
289
289
  <div
290
290
  className="c3 lazyload"
291
+ data-testid="PictureWrapper"
291
292
  >
292
293
  <img
293
294
  alt="Happy man going to work"
@@ -296,6 +297,7 @@ exports[`renders correctly 1`] = `
296
297
  data-sizes="auto"
297
298
  data-src={null}
298
299
  data-srcset="//images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg?w=200&h=150&q=50 200w,//images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg?w=400&h=300&q=50 400w,//images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg?w=800&h=600&q=50 800w,//images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg?w=1200&h=900&q=50 1200w,//images.ctfassets.net/zsfivwzfgl3t/Yq59XdwwQgjNOxky93K1Q/17c2d80dce99067b0b3508f33075cbe3/funding_4-3_2x.jpg?w=1440&h=1080&q=50 1440w"
300
+ data-testid="Picture"
299
301
  src={null}
300
302
  srcSet="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
301
303
  />
@@ -28,8 +28,9 @@ const StatsSlice = ({
28
28
  $backgroundColour={pageBackgroundColour}
29
29
  $paddingTop={paddingTop}
30
30
  $paddingBottom={paddingBottom}
31
+ data-testid="StatsSliceOuterWrapper"
31
32
  >
32
- <InnerWrapper>
33
+ <InnerWrapper data-testid="StatsSliceInnerWrapper">
33
34
  {nodes?.map((node, index) => {
34
35
  const key = index + String(node.title);
35
36
  const nodeComponent = (
@@ -62,9 +62,9 @@ export default function StatNodeComponent({
62
62
  let characterDelay = startDelayRef.current;
63
63
 
64
64
  return (
65
- <StatContainer>
66
- <ValueContainer>
67
- <StatValue aria-hidden="true" ref={elRef}>
65
+ <StatContainer data-testid="StatContainer">
66
+ <ValueContainer data-testid="ValueContainer">
67
+ <StatValue aria-hidden="true" ref={elRef} data-testid="StatValue">
68
68
  {wordObjList.map((wordObj, wordIndex) => {
69
69
  // slightly gnarly here as we need to create a span for each word,
70
70
  // then the characters within that span;
@@ -74,7 +74,7 @@ export default function StatNodeComponent({
74
74
  // but that's unlikely to be a problem in practice
75
75
  const wordKey = String(wordIndex) + wordObj.word;
76
76
  return (
77
- <Word key={wordKey}>
77
+ <Word key={wordKey} data-testid={`StatWord-${wordIndex}`}>
78
78
  {wordObj.map(({ character, type }, characterIndex) => {
79
79
  const characterKey = String(characterIndex) + character;
80
80
  // update the character delay for the next character;
@@ -115,11 +115,12 @@ export default function StatNodeComponent({
115
115
  src={altCtaUnderline}
116
116
  $delay={startDelayRef.current + duration * 1.5}
117
117
  data-ease={ease}
118
+ data-testid="ValueUnderline"
118
119
  />
119
120
  )}
120
- <AccessibleValue>{stat}</AccessibleValue>
121
+ <AccessibleValue data-testid="AccessibleValue">{stat}</AccessibleValue>
121
122
  </ValueContainer>
122
- <Body>{body}</Body>
123
+ <Body data-testid="StatBody">{body}</Body>
123
124
  </StatContainer>
124
125
  );
125
126
  }
@@ -631,22 +631,28 @@ exports[`Stats Slices with a single node should render 1`] = `
631
631
 
632
632
  <div
633
633
  className="c0"
634
+ data-testid="StatsSliceOuterWrapper"
634
635
  >
635
636
  <div
636
637
  className="c1"
638
+ data-testid="StatsSliceInnerWrapper"
637
639
  >
638
640
  <div
639
641
  className="c2"
642
+ data-testid="StatContainer"
640
643
  >
641
644
  <div
642
645
  className="c3"
646
+ data-testid="ValueContainer"
643
647
  >
644
648
  <div
645
649
  aria-hidden="true"
646
650
  className="c4"
651
+ data-testid="StatValue"
647
652
  >
648
653
  <span
649
654
  className="c5"
655
+ data-testid="StatWord-0"
650
656
  >
651
657
  <div
652
658
  className="c6"
@@ -1229,12 +1235,14 @@ exports[`Stats Slices with a single node should render 1`] = `
1229
1235
  </div>
1230
1236
  <h2
1231
1237
  className="c22"
1238
+ data-testid="AccessibleValue"
1232
1239
  >
1233
1240
  123,456,789.02
1234
1241
  </h2>
1235
1242
  </div>
1236
1243
  <span
1237
1244
  className="c23 c24"
1245
+ data-testid="StatBody"
1238
1246
  >
1239
1247
  hello
1240
1248
  </span>
@@ -1874,22 +1882,28 @@ exports[`Stats Slices with multiple nodes should render 1`] = `
1874
1882
 
1875
1883
  <div
1876
1884
  className="c0"
1885
+ data-testid="StatsSliceOuterWrapper"
1877
1886
  >
1878
1887
  <div
1879
1888
  className="c1"
1889
+ data-testid="StatsSliceInnerWrapper"
1880
1890
  >
1881
1891
  <div
1882
1892
  className="c2"
1893
+ data-testid="StatContainer"
1883
1894
  >
1884
1895
  <div
1885
1896
  className="c3"
1897
+ data-testid="ValueContainer"
1886
1898
  >
1887
1899
  <div
1888
1900
  aria-hidden="true"
1889
1901
  className="c4"
1902
+ data-testid="StatValue"
1890
1903
  >
1891
1904
  <span
1892
1905
  className="c5"
1906
+ data-testid="StatWord-0"
1893
1907
  >
1894
1908
  <div
1895
1909
  className="c6"
@@ -2472,28 +2486,34 @@ exports[`Stats Slices with multiple nodes should render 1`] = `
2472
2486
  </div>
2473
2487
  <h2
2474
2488
  className="c22"
2489
+ data-testid="AccessibleValue"
2475
2490
  >
2476
2491
  123,456,789.02
2477
2492
  </h2>
2478
2493
  </div>
2479
2494
  <span
2480
2495
  className="c23 c24"
2496
+ data-testid="StatBody"
2481
2497
  >
2482
2498
  Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam.
2483
2499
  </span>
2484
2500
  </div>
2485
2501
  <div
2486
2502
  className="c2"
2503
+ data-testid="StatContainer"
2487
2504
  >
2488
2505
  <div
2489
2506
  className="c3"
2507
+ data-testid="ValueContainer"
2490
2508
  >
2491
2509
  <div
2492
2510
  aria-hidden="true"
2493
2511
  className="c4"
2512
+ data-testid="StatValue"
2494
2513
  >
2495
2514
  <span
2496
2515
  className="c5"
2516
+ data-testid="StatWord-0"
2497
2517
  >
2498
2518
  <div
2499
2519
  className="c6"
@@ -3076,28 +3096,34 @@ exports[`Stats Slices with multiple nodes should render 1`] = `
3076
3096
  </div>
3077
3097
  <h2
3078
3098
  className="c22"
3099
+ data-testid="AccessibleValue"
3079
3100
  >
3080
3101
  456,789,123.02
3081
3102
  </h2>
3082
3103
  </div>
3083
3104
  <span
3084
3105
  className="c23 c24"
3106
+ data-testid="StatBody"
3085
3107
  >
3086
3108
  Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam.
3087
3109
  </span>
3088
3110
  </div>
3089
3111
  <div
3090
3112
  className="c2"
3113
+ data-testid="StatContainer"
3091
3114
  >
3092
3115
  <div
3093
3116
  className="c3"
3117
+ data-testid="ValueContainer"
3094
3118
  >
3095
3119
  <div
3096
3120
  aria-hidden="true"
3097
3121
  className="c4"
3122
+ data-testid="StatValue"
3098
3123
  >
3099
3124
  <span
3100
3125
  className="c5"
3126
+ data-testid="StatWord-0"
3101
3127
  >
3102
3128
  <div
3103
3129
  className="c6"
@@ -3680,12 +3706,14 @@ exports[`Stats Slices with multiple nodes should render 1`] = `
3680
3706
  </div>
3681
3707
  <h2
3682
3708
  className="c22"
3709
+ data-testid="AccessibleValue"
3683
3710
  >
3684
3711
  789,123,456.02
3685
3712
  </h2>
3686
3713
  </div>
3687
3714
  <span
3688
3715
  className="c23 c24"
3716
+ data-testid="StatBody"
3689
3717
  >
3690
3718
  Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam.
3691
3719
  </span>
@@ -121,6 +121,7 @@ exports[`renders correctly 1`] = `
121
121
 
122
122
  <div
123
123
  className="c0 TextInputWithDropdown"
124
+ data-testid="TextInputWithDropdownContainer"
124
125
  onKeyDown={[Function]}
125
126
  >
126
127
  <label
@@ -145,6 +146,7 @@ exports[`renders correctly 1`] = `
145
146
  aria-required={false}
146
147
  autoComplete="off"
147
148
  className="c6"
149
+ data-testid="TextInputWithDropdownInput"
148
150
  defaultValue=""
149
151
  id="typeahead-test"
150
152
  name="q"
@@ -42,7 +42,6 @@ it('renders correctly', () => {
42
42
  display: inline;
43
43
  color: #FFFFFF;
44
44
  font-weight: normal;
45
- color: #E52630;
46
45
  }
47
46
 
48
47
  .c3:hover,
@@ -199,6 +199,7 @@ const DynamicGallery = ({
199
199
  $textColour={textColour}
200
200
  $paddingTop={paddingTop}
201
201
  $paddingBottom={paddingBottom}
202
+ data-testid="DynamicGalleryOuterWrapper"
202
203
  >
203
204
  <LightboxContext.Provider
204
205
  value={{
@@ -211,7 +212,7 @@ const DynamicGallery = ({
211
212
  setFocusedNode
212
213
  }}
213
214
  >
214
- <ImageGrid className="gallery-grid" $maxWidth={maxWidth} onKeyDown={event => handleKeyDown(event)}>
215
+ <ImageGrid className="gallery-grid" $maxWidth={maxWidth} onKeyDown={event => handleKeyDown(event)} data-testid="DynamicGalleryImageGrid">
215
216
  {hasNodes
216
217
  && Array(columnCount)
217
218
  .fill(null)
@@ -235,11 +236,11 @@ const DynamicGallery = ({
235
236
  );
236
237
  })}
237
238
 
238
- <EmptyMessage $isEmpty={!hasNodes}>No images to display</EmptyMessage>
239
+ <EmptyMessage $isEmpty={!hasNodes} data-testid="DynamicGalleryEmptyMessage">No images to display</EmptyMessage>
239
240
  </ImageGrid>
240
241
  <Lightbox />
241
242
  {/* eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex */}
242
- <FocusTrap className="gallery-focus-trap" tabIndex={0}>
243
+ <FocusTrap className="gallery-focus-trap" tabIndex={0} data-testid="DynamicGalleryFocusTrap">
243
244
  <span>End of gallery</span>
244
245
  </FocusTrap>
245
246
  </LightboxContext.Provider>
@@ -89,7 +89,7 @@ export default function DynamicGalleryColumn({
89
89
  const NodeComponent = useLightbox ? InteractiveGalleryNode : GalleryNode;
90
90
 
91
91
  return (
92
- <Column ref={elRef} className="gallery-column">
92
+ <Column ref={elRef} className="gallery-column" data-testid="GalleryColumn">
93
93
  {nodes
94
94
  .map((node, nodeIndex) => {
95
95
  // only render nodes that are in the current column;
@@ -112,6 +112,7 @@ export default function DynamicGalleryColumn({
112
112
  $focusOutlineColour={focusOutlineColour}
113
113
  onPointerUp={useLightbox ? () => handlePointerUp(node) : undefined}
114
114
  tabIndex={0}
115
+ data-testid={`GalleryNode-${nodeIndex}`}
115
116
  >
116
117
  <ImageContainer
117
118
  className="gallery-node-image"
@@ -119,6 +120,7 @@ export default function DynamicGalleryColumn({
119
120
  $minHeight={String(minHeight) + 'px'}
120
121
  // eslint-disable-next-line prefer-template
121
122
  $maxHeight={String(maxHeight) + 'px'}
123
+ data-testid={`GalleryImageContainer-${nodeIndex}`}
122
124
  >
123
125
  <Picture
124
126
  image={node.image}
@@ -136,7 +138,7 @@ export default function DynamicGalleryColumn({
136
138
  }}
137
139
  />
138
140
  </ImageContainer>
139
- <Details>
141
+ <Details data-testid={`GalleryDetails-${nodeIndex}`}>
140
142
  {node.gridBody && <div>{node.gridBody}</div>}
141
143
  {node.gridCaption && <div>{node.gridCaption}</div>}
142
144
  </Details>