@comicrelief/component-library 7.24.0 → 7.24.2
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/.github/workflows/main.yml +22 -24
- package/dist/components/Atoms/Button/Button.js +21 -15
- package/dist/components/Atoms/Button/Button.test.js +3 -3
- package/dist/components/Atoms/ButtonWithStates/ButtonWithStates.js +19 -22
- package/dist/components/Atoms/Checkbox/Checkbox.js +42 -26
- package/dist/components/Atoms/Checkbox/Checkbox.test.js +3 -3
- package/dist/components/Atoms/Confetti/Confetti.js +20 -23
- package/dist/components/Atoms/Confetti/_TriggerConfetti.js +4 -11
- package/dist/components/Atoms/ErrorText/ErrorText.js +15 -11
- package/dist/components/Atoms/ErrorText/ErrorText.test.js +3 -3
- package/dist/components/Atoms/Icons/Arrow.js +16 -15
- package/dist/components/Atoms/Icons/AtSign.js +9 -9
- package/dist/components/Atoms/Icons/Chevron.js +16 -15
- package/dist/components/Atoms/Icons/Curve.js +16 -18
- package/dist/components/Atoms/Icons/Download.js +8 -8
- package/dist/components/Atoms/Icons/External.js +8 -8
- package/dist/components/Atoms/Icons/Favourite.js +8 -8
- package/dist/components/Atoms/Icons/Internal.js +8 -8
- package/dist/components/Atoms/Icons/index.js +8 -8
- package/dist/components/Atoms/Input/Input.js +38 -33
- package/dist/components/Atoms/Input/input.test.js +3 -3
- package/dist/components/Atoms/Label/Label.js +28 -23
- package/dist/components/Atoms/Link/Link.js +24 -29
- package/dist/components/Atoms/Link/Link.style.js +51 -40
- package/dist/components/Atoms/Link/Link.test.js +9 -9
- package/dist/components/Atoms/Logo/Logo.js +16 -18
- package/dist/components/Atoms/Logo/Logo.test.js +3 -3
- package/dist/components/Atoms/Pagination/Item/Item.js +7 -7
- package/dist/components/Atoms/Pagination/Item/Item.style.js +35 -28
- package/dist/components/Atoms/Pagination/List/List.js +21 -19
- package/dist/components/Atoms/Pagination/Pagination.js +41 -49
- package/dist/components/Atoms/Pagination/Pagination.test.js +54 -108
- package/dist/components/Atoms/Pagination/Utils/PaginationCalculator.js +15 -15
- package/dist/components/Atoms/Picture/Picture.js +34 -44
- package/dist/components/Atoms/Picture/Picture.test.js +5 -5
- package/dist/components/Atoms/RadioButton/RadioButton.js +35 -23
- package/dist/components/Atoms/RadioButton/RadioButton.test.js +3 -3
- package/dist/components/Atoms/RichText/RichText.js +9 -11
- package/dist/components/Atoms/RichText/RichText.test.js +4 -4
- package/dist/components/Atoms/Select/Select.js +56 -49
- package/dist/components/Atoms/Select/Select.test.js +3 -3
- package/dist/components/Atoms/SocialIcons/Icon/Icon.js +13 -13
- package/dist/components/Atoms/SocialIcons/SocialIcons.js +25 -23
- package/dist/components/Atoms/SocialIcons/SocialIcons.test.js +7 -7
- package/dist/components/Atoms/SocialIcons/Utils/Icons.js +3 -3
- package/dist/components/Atoms/SocialIcons/Utils/Links.js +19 -20
- package/dist/components/Atoms/SocialIcons/assets/X-white-Subtract.svg +3 -0
- package/dist/components/Atoms/Text/Text.js +62 -41
- package/dist/components/Atoms/Text/Text.test.js +11 -11
- package/dist/components/Atoms/TextArea/TextArea.js +18 -17
- package/dist/components/Atoms/TextArea/TextArea.test.js +3 -3
- package/dist/components/Atoms/TextInputWithDropdown/TextInputWithDropdown.js +69 -86
- package/dist/components/Atoms/TextInputWithDropdown/TextInputWithDropdown.style.js +23 -15
- package/dist/components/Atoms/TextInputWithDropdown/TextInputWithDropdown.test.js +15 -19
- package/dist/components/Molecules/Accordion/Accordion.js +35 -32
- package/dist/components/Molecules/Accordion/Accordion.test.js +3 -3
- package/dist/components/Molecules/ArticleTeaser/ArticleTeaser.js +81 -52
- package/dist/components/Molecules/ArticleTeaser/ArticleTeaser.test.js +5 -5
- package/dist/components/Molecules/Banner/Banner.js +21 -13
- package/dist/components/Molecules/Banner/Banner.test.js +3 -3
- package/dist/components/Molecules/Box/Box.js +33 -27
- package/dist/components/Molecules/Box/Box.test.js +5 -5
- package/dist/components/Molecules/Card/Card.js +22 -22
- package/dist/components/Molecules/Card/Card.test.js +5 -5
- package/dist/components/Molecules/CardDs/CardDs.js +80 -55
- package/dist/components/Molecules/CardDs/CardDs.test.js +3 -3
- package/dist/components/Molecules/Chip/Chip.js +8 -6
- package/dist/components/Molecules/Chip/Chip.style.js +48 -28
- package/dist/components/Molecules/Chip/Chip.test.js +4 -6
- package/dist/components/Molecules/Countdown/Countdown.js +28 -36
- package/dist/components/Molecules/Countdown/Countdown.style.js +3 -3
- package/dist/components/Molecules/Descriptor/Descriptor.js +32 -26
- package/dist/components/Molecules/Descriptor/Descriptor.test.js +5 -5
- package/dist/components/Molecules/DoubleCopy/DoubleCopy.js +6 -4
- package/dist/components/Molecules/DoubleCopy/DoubleCopy.style.js +7 -5
- package/dist/components/Molecules/DoubleCopy/DoubleCopy.test.js +4 -4
- package/dist/components/Molecules/HeroBanner/HeroBanner.js +13 -17
- package/dist/components/Molecules/InfoBanner/InfoBanner.js +22 -18
- package/dist/components/Molecules/InfoBanner/InfoBanner.test.js +10 -10
- package/dist/components/Molecules/Logos/Logos.js +26 -14
- package/dist/components/Molecules/Logos/Logos.md +5 -0
- package/dist/components/Molecules/Lookup/Lookup.js +49 -84
- package/dist/components/Molecules/PartnerLink/PartnerLink.js +10 -11
- package/dist/components/Molecules/PartnerLink/PartnerLink.style.js +15 -9
- package/dist/components/Molecules/PartnerLink/PartnerLink.test.js +3 -3
- package/dist/components/Molecules/Promo/Promo.js +30 -36
- package/dist/components/Molecules/Promo/Promo.style.js +44 -31
- package/dist/components/Molecules/Promo/Promo.test.js +6 -6
- package/dist/components/Molecules/Promo/_ProgressRing.js +13 -19
- package/dist/components/Molecules/Promo/_PromoVideo.js +25 -34
- package/dist/components/Molecules/Promo/_PromoVideoButton.js +7 -7
- package/dist/components/Molecules/Promo/_PromoVideoButton.style.js +68 -41
- package/dist/components/Molecules/SchoolLookup/SchoolLookup.js +29 -52
- package/dist/components/Molecules/SchoolLookup/SchoolLookup.test.js +4 -4
- package/dist/components/Molecules/SearchInput/SearchInput.js +8 -8
- package/dist/components/Molecules/SearchInput/SearchInput.style.js +22 -14
- package/dist/components/Molecules/SearchInput/SearchInput.test.js +4 -4
- package/dist/components/Molecules/SearchResult/SearchResult.js +43 -29
- package/dist/components/Molecules/SearchResult/SearchResult.test.js +9 -9
- package/dist/components/Molecules/ShareButton/ShareButton.js +22 -26
- package/dist/components/Molecules/ShareButton/ShareButton.style.js +5 -5
- package/dist/components/Molecules/ShareButton/ShareButton.test.js +3 -3
- package/dist/components/Molecules/ShareButton/assets/ShareIcons.js +2 -2
- package/dist/components/Molecules/SimpleSchoolLookup/SimpleSchoolLookup.js +28 -55
- package/dist/components/Molecules/SingleMessage/SingleMessage.js +99 -123
- package/dist/components/Molecules/SingleMessage/SingleMessage.style.js +132 -81
- package/dist/components/Molecules/SingleMessage/SingleMessage.test.js +13 -13
- package/dist/components/Molecules/SingleMessageDS/SingleMessageDs.js +31 -40
- package/dist/components/Molecules/SingleMessageDS/SingleMessageDs.style.js +85 -49
- package/dist/components/Molecules/SingleMessageDS/SingleMessageDs.test.js +3 -3
- package/dist/components/Molecules/Typeahead/Typeahead.js +47 -84
- package/dist/components/Molecules/Typeahead/Typeahead.test.js +12 -35
- package/dist/components/Molecules/VideoBanner/VideoBanner.js +20 -25
- package/dist/components/Molecules/VideoBanner/VideoBanner.test.js +4 -4
- package/dist/components/Organisms/CookieBanner/CookieBanner.js +7 -5
- package/dist/components/Organisms/CookieBanner/CookieBanner.style.js +21 -13
- package/dist/components/Organisms/CookieBanner/CookieBanner.test.js +5 -5
- package/dist/components/Organisms/Donate/Donate.js +34 -37
- package/dist/components/Organisms/Donate/Donate.style.js +85 -53
- package/dist/components/Organisms/Donate/Donate.test.js +10 -10
- package/dist/components/Organisms/Donate/Form/Form.js +53 -78
- package/dist/components/Organisms/Donate/Form/PopUpComponent.js +25 -30
- package/dist/components/Organisms/Donate/GivingSelector/GivingSelector.js +11 -13
- package/dist/components/Organisms/Donate/GivingSelector/GivingSelector.style.js +38 -22
- package/dist/components/Organisms/Donate/MoneyBuy/MoneyBuy.js +47 -30
- package/dist/components/Organisms/EmailSignUp/EmailSignUp.style.js +63 -37
- package/dist/components/Organisms/EmailSignUp/EmailSignUp.test.js +12 -12
- package/dist/components/Organisms/EmailSignUp/EmailSignUpForm.js +23 -43
- package/dist/components/Organisms/EmailSignUp/_EmailSignUp.js +25 -21
- package/dist/components/Organisms/EmailSignUp/_EmailSignUpConfig.js +10 -9
- package/dist/components/Organisms/EmailSignUp/_TextInput.js +20 -18
- package/dist/components/Organisms/Footer/Footer.js +10 -10
- package/dist/components/Organisms/Footer/Footer.style.js +27 -21
- package/dist/components/Organisms/Footer/Footer.test.js +3 -3
- package/dist/components/Organisms/Footer/Nav/Nav.js +59 -70
- package/dist/components/Organisms/Footer/Nav/Nav.style.js +77 -43
- package/dist/components/Organisms/Header/Burger/BurgerMenu.js +6 -4
- package/dist/components/Organisms/Header/Burger/BurgerMenu.style.js +37 -21
- package/dist/components/Organisms/Header/Header.js +8 -8
- package/dist/components/Organisms/Header/Header.style.js +27 -19
- package/dist/components/Organisms/Header/Nav/Nav.js +39 -50
- package/dist/components/Organisms/Header/Nav/Nav.style.js +103 -57
- package/dist/components/Organisms/Header/header.test.js +1 -1
- package/dist/components/Organisms/ImpactSlider/ImpactMoneybuys.style.js +32 -29
- package/dist/components/Organisms/ImpactSlider/ImpactSlider.js +19 -22
- package/dist/components/Organisms/ImpactSlider/ImpactSlider.style.js +38 -24
- package/dist/components/Organisms/ImpactSlider/Slider.style.js +8 -14
- package/dist/components/Organisms/ImpactSlider/_ImpactMoneybuys.js +11 -11
- package/dist/components/Organisms/ImpactSlider/_Slider.js +9 -7
- package/dist/components/Organisms/ImpactSlider/_utils.js +11 -11
- package/dist/components/Organisms/MarketingPreferencesDS/MarketingPreferencesDS.style.js +61 -38
- package/dist/components/Organisms/MarketingPreferencesDS/MarketingPreferencesDSForm.js +24 -16
- package/dist/components/Organisms/MarketingPreferencesDS/_AssociatedFields.js +1 -1
- package/dist/components/Organisms/MarketingPreferencesDS/_CheckAnswer.js +20 -16
- package/dist/components/Organisms/MarketingPreferencesDS/_DefaultCopy.js +3 -3
- package/dist/components/Organisms/MarketingPreferencesDS/_MarketingPreferencesDS.js +46 -36
- package/dist/components/Organisms/MarketingPreferencesDS/_MarketingPrefsConfig.js +21 -34
- package/dist/components/Organisms/MarketingPreferencesDS/_TextInput.js +20 -18
- package/dist/components/Organisms/Membership/Form/Form.js +48 -81
- package/dist/components/Organisms/Membership/Membership.js +17 -15
- package/dist/components/Organisms/Membership/Membership.style.js +81 -51
- package/dist/components/Organisms/Membership/Membership.test.js +4 -4
- package/dist/components/Organisms/Membership/MoneyBox/MoneyBox.js +37 -26
- package/dist/hoc/shallowWithTheme.js +1 -1
- package/dist/index.js +67 -67
- package/dist/styleguide/CRLogo.js +2 -2
- package/dist/styleguide/StyleGuideRenderer.js +9 -7
- package/dist/styleguide/ThemeWrapper.js +5 -3
- package/dist/styleguide/data/data.js +3 -3
- package/dist/theme/crTheme/buttonColors.js +6 -5
- package/dist/theme/crTheme/colors.js +4 -3
- package/dist/theme/crTheme/fontSizes.js +4 -3
- package/dist/theme/crTheme/linkStyles.js +6 -5
- package/dist/theme/crTheme/theme.js +1 -1
- package/dist/theme/shared/breakpoint.js +4 -3
- package/dist/theme/shared/fontFamilies.js +5 -4
- package/dist/theme/shared/hideVisually.js +1 -1
- package/dist/theme/shared/size.js +4 -3
- package/dist/theme/shared/spacing.js +2 -2
- package/dist/theme/shared/zIndex.js +3 -3
- package/dist/theme/srTheme/buttonColors.js +6 -5
- package/dist/theme/srTheme/colors.js +4 -3
- package/dist/theme/srTheme/fontSizes.js +4 -3
- package/dist/theme/srTheme/linkStyles.js +6 -5
- package/dist/theme/srTheme/theme.js +1 -1
- package/dist/utils/Membership.js +30 -27
- package/dist/utils/ShareButton/sharePopUpHelper.js +8 -8
- package/dist/utils/ShareButton/shareTracking.js +1 -1
- package/dist/utils/ShareButton/shareUrlHelper.js +3 -3
- package/dist/utils/allowListed.js +3 -5
- package/dist/utils/allowListed.test.js +3 -3
- package/dist/utils/internalLinkHelper.js +8 -10
- package/dist/utils/navHelper.js +2 -2
- package/package.json +12 -9
- package/playwright/components/atoms/checkbox.spec.js +64 -0
- package/playwright/components/atoms/input.spec.js +158 -0
- package/playwright/components/atoms/label.spec.js +29 -0
- package/playwright/components/atoms/link.spec.js +48 -0
- package/playwright/components/atoms/radioButton.spec.js +30 -0
- package/playwright/components/atoms/select.spec.js +36 -0
- package/playwright/components/atoms/textArea.spec.js +39 -0
- package/playwright/components/atoms/textInputWithDropdown.spec.js +23 -0
- package/playwright/components/molecules/accordian.spec.js +20 -0
- package/playwright/components/molecules/schoolLookup.spec.js +26 -0
- package/playwright/components/molecules/searchInput.spec.js +24 -0
- package/playwright/components/molecules/shareButton.spec.js +32 -0
- package/playwright/components/molecules/simpleSchoolLookUp.spec.js +35 -0
- package/playwright/components/molecules/typeahead.spec.js +27 -0
- package/playwright/components/organisms/donate.spec.js +293 -0
- package/playwright/components/organisms/emailSignUpForm.spec.js +109 -0
- package/playwright/components/organisms/footer.spec.js +67 -0
- package/playwright/components/organisms/header.spec.js +82 -0
- package/playwright/components/organisms/impactSlider.spec.js +292 -0
- package/playwright/components/organisms/marketingPreferences.spec.js +220 -0
- package/playwright/components/organisms/membership.spec.js +47 -0
- package/playwright.config.js +49 -0
- package/src/components/Atoms/SocialIcons/Utils/Icons.js +1 -1
- package/src/components/Atoms/SocialIcons/assets/X-white-Subtract.svg +3 -0
- package/src/components/Molecules/Logos/Logos.js +18 -6
- package/src/components/Molecules/Logos/Logos.md +5 -0
- package/src/components/Organisms/ImpactSlider/_ImpactMoneybuys.js +3 -4
- package/src/components/Organisms/Membership/Membership.test.js +1 -1
- package/cypress/e2e/components/atoms/button.cy.js +0 -102
- package/cypress/e2e/components/atoms/buttonWithStates.cy.js +0 -47
- package/cypress/e2e/components/atoms/checkbox.cy.js +0 -70
- package/cypress/e2e/components/atoms/confetti.cy.js +0 -46
- package/cypress/e2e/components/atoms/errorText.cy.js +0 -45
- package/cypress/e2e/components/atoms/input.cy.js +0 -157
- package/cypress/e2e/components/atoms/label.cy.js +0 -93
- package/cypress/e2e/components/atoms/link.cy.js +0 -190
- package/cypress/e2e/components/atoms/logo.cy.js +0 -132
- package/cypress/e2e/components/atoms/pagination.cy.js +0 -191
- package/cypress/e2e/components/atoms/picture.cy.js +0 -130
- package/cypress/e2e/components/atoms/radioButton.cy.js +0 -76
- package/cypress/e2e/components/atoms/richText.cy.js +0 -70
- package/cypress/e2e/components/atoms/select.cy.js +0 -84
- package/cypress/e2e/components/atoms/socialIcons.cy.js +0 -162
- package/cypress/e2e/components/atoms/text.cy.js +0 -169
- package/cypress/e2e/components/atoms/textArea.cy.js +0 -89
- package/cypress/e2e/components/atoms/textInputWithDrop.cy.js +0 -76
- package/cypress/e2e/components/molecules/accordion.cy.js +0 -67
- package/cypress/e2e/components/molecules/articleTeaser.cy.js +0 -105
- package/cypress/e2e/components/molecules/banner.cy.js +0 -67
- package/cypress/e2e/components/molecules/box.cy.js +0 -104
- package/cypress/e2e/components/molecules/card.cy.js +0 -105
- package/cypress/e2e/components/molecules/cardDs.cy.js +0 -198
- package/cypress/e2e/components/molecules/chip.cy.js +0 -68
- package/cypress/e2e/components/molecules/countdown.cy.js +0 -71
- package/cypress/e2e/components/molecules/descriptor.cy.js +0 -142
- package/cypress/e2e/components/molecules/doubleCopy.cy.js +0 -79
- package/cypress/e2e/components/molecules/heroBanner.cy.js +0 -69
- package/cypress/e2e/components/molecules/infoBanner.cy.js +0 -69
- package/cypress/e2e/components/molecules/partnerLink.cy.js +0 -68
- package/cypress/e2e/components/molecules/promo.cy.js +0 -74
- package/cypress/e2e/components/molecules/schoolLookup.cy.js +0 -83
- package/cypress/e2e/components/molecules/searchInput.cy.js +0 -72
- package/cypress/e2e/components/molecules/searchResult.cy.js +0 -191
- package/cypress/e2e/components/molecules/shareButton.cy.js +0 -76
- package/cypress/e2e/components/molecules/simpleSchoolLookup.cy.js +0 -83
- package/cypress/e2e/components/molecules/singleMessage.cy.js +0 -502
- package/cypress/e2e/components/molecules/singleMessageDs.cy.js +0 -234
- package/cypress/e2e/components/molecules/typeahead.cy.js +0 -97
- package/cypress/e2e/components/molecules/videoBanner.cy.js +0 -132
- package/cypress/e2e/components/organisms/cookieBanner.cy.js +0 -80
- package/cypress/e2e/components/organisms/donate.cy.js +0 -284
- package/cypress/e2e/components/organisms/emailSignUp.cy.js +0 -54
- package/cypress/e2e/components/organisms/footer.cy.js +0 -168
- package/cypress/e2e/components/organisms/header.cy.js +0 -138
- package/cypress/e2e/components/organisms/impactSlider.cy.js +0 -72
- package/cypress/e2e/components/organisms/marketingPreferencesDSForm.cy.js +0 -589
- package/cypress/e2e/components/organisms/membership.cy.js +0 -122
- package/cypress/fixtures/example.json +0 -5
- package/cypress/plugins/index.js +0 -21
- package/cypress/support/commands.js +0 -25
- package/cypress/support/e2e.js +0 -36
- package/cypress.config.js +0 -15
- package/dist/components/Atoms/SocialIcons/assets/x-logo.svg +0 -3
- package/src/components/Atoms/SocialIcons/assets/x-logo.svg +0 -3
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
const { test, expect } = require('@playwright/test');
|
|
2
|
+
|
|
3
|
+
test.describe('typeahead component', () => {
|
|
4
|
+
test('typeahead', async ({ page }) => {
|
|
5
|
+
|
|
6
|
+
await page.goto('/#typeahead');
|
|
7
|
+
|
|
8
|
+
await expect(page.locator('[data-testid="Typeahead-example-1"]')).toBeVisible();
|
|
9
|
+
|
|
10
|
+
await expect(page.locator('[data-preview="Typeahead"]')).toBeVisible();
|
|
11
|
+
|
|
12
|
+
const inputElement = page.locator('[aria-describedby="typeahead-test"]');
|
|
13
|
+
|
|
14
|
+
// Get the 'placeholder' attribute
|
|
15
|
+
const placeholderAttribute = await inputElement.getAttribute('placeholder');
|
|
16
|
+
|
|
17
|
+
// Verify the 'placeholder' attribute
|
|
18
|
+
expect(placeholderAttribute).toBe('Start searching...');
|
|
19
|
+
|
|
20
|
+
// type a word and typeahead should give options
|
|
21
|
+
await page.locator('input#typeahead-test').type('red nos');
|
|
22
|
+
await expect(page.locator('label[for="typeahead-test"] ~ div > ul[role="listbox"]')).toBeVisible();
|
|
23
|
+
await expect(page.locator('label[for="typeahead-test"] ~ div > ul[role="listbox"] > li[id="option-0"]')).toContainText('red nose');
|
|
24
|
+
|
|
25
|
+
await page.close();
|
|
26
|
+
});
|
|
27
|
+
});
|
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
const { test, expect } = require('@playwright/test');
|
|
2
|
+
|
|
3
|
+
test.describe('donate component', () => {
|
|
4
|
+
test('Donate-example-1 - Single Donation', async ({ page }) => {
|
|
5
|
+
|
|
6
|
+
await page.goto('/#donate');
|
|
7
|
+
|
|
8
|
+
await expect(page.locator('[data-testid="Donate-example-1"]')).toBeVisible();
|
|
9
|
+
|
|
10
|
+
// moneybuy 1
|
|
11
|
+
await expect(page.locator('[data-testid="Donate-example-1"] input#mship-1--MoneyBuy-userInput')).toHaveValue('20');
|
|
12
|
+
await page.locator('[data-testid="Donate-example-1"] #mship-1--moneyBuy-box1[aria-label="£12.10"]').click();
|
|
13
|
+
await expect(page.locator('[data-testid="Donate-example-1"] input#mship-1--MoneyBuy-userInput')).toHaveValue('12.10');
|
|
14
|
+
|
|
15
|
+
let moneybuyOneButtonText = await page.locator('[data-testid="Donate-example-1"] button[type="submit"]').textContent();
|
|
16
|
+
console.log('buttonText:', moneybuyOneButtonText);
|
|
17
|
+
|
|
18
|
+
await expect(page.locator('[data-testid="Donate-example-1"] button[type="submit"]')).toContainText('Donate £12.10 now');
|
|
19
|
+
|
|
20
|
+
// moneybuy 2
|
|
21
|
+
await page.locator('[data-testid="Donate-example-1"] #mship-1--moneyBuy-box2[aria-label="£20.00"]').click();
|
|
22
|
+
await expect(page.locator('[data-testid="Donate-example-1"] input#mship-1--MoneyBuy-userInput')).toHaveValue('20');
|
|
23
|
+
|
|
24
|
+
let moneybuyTwoButtonText = await page.locator('[data-testid="Donate-example-1"] button[type="submit"]').textContent();
|
|
25
|
+
console.log('buttonText:', moneybuyTwoButtonText);
|
|
26
|
+
|
|
27
|
+
await expect(page.locator('[data-testid="Donate-example-1"] button[type="submit"]')).toContainText('Donate £20 now');
|
|
28
|
+
|
|
29
|
+
// moneybuy 3
|
|
30
|
+
await page.locator('[data-testid="Donate-example-1"] #mship-1--moneyBuy-box3[aria-label="£30.00"]').click();
|
|
31
|
+
await expect(page.locator('[data-testid="Donate-example-1"] input#mship-1--MoneyBuy-userInput')).toHaveValue('30');
|
|
32
|
+
|
|
33
|
+
let moneybuyThreeButtonText = await page.locator('[data-testid="Donate-example-1"] button[type="submit"]').textContent();
|
|
34
|
+
console.log('buttonText:', moneybuyThreeButtonText);
|
|
35
|
+
|
|
36
|
+
await expect(page.locator('[data-testid="Donate-example-1"] button[type="submit"]')).toContainText('Donate £30 now');
|
|
37
|
+
|
|
38
|
+
// amount field validation
|
|
39
|
+
await page.locator('[data-testid="Donate-example-1"] input#mship-1--MoneyBuy-userInput').fill('');
|
|
40
|
+
|
|
41
|
+
// enter amount 0 should show error message
|
|
42
|
+
await page.locator('[data-testid="Donate-example-1"] input#mship-1--MoneyBuy-userInput').type('0');
|
|
43
|
+
await expect(page.locator('[data-testid="Donate-example-1"] p:nth-child(4)')).toContainText('Please enter an amount between £1 and £25000 and up to 2 decimal places');
|
|
44
|
+
|
|
45
|
+
// enter amount 25001 should show error message
|
|
46
|
+
await page.locator('[data-testid="Donate-example-1"] input#mship-1--MoneyBuy-userInput').fill('');
|
|
47
|
+
await page.locator('[data-testid="Donate-example-1"] input#mship-1--MoneyBuy-userInput').type('25001');
|
|
48
|
+
await expect(page.locator('[data-testid="Donate-example-1"] p:nth-child(4)')).toContainText('Please enter an amount between £1 and £25000 and up to 2 decimal places');
|
|
49
|
+
|
|
50
|
+
// enter own amount in decimals should not show error message
|
|
51
|
+
await page.locator('[data-testid="Donate-example-1"] input#mship-1--MoneyBuy-userInput').fill('');
|
|
52
|
+
await page.locator('[data-testid="Donate-example-1"] input#mship-1--MoneyBuy-userInput').type('12.99');
|
|
53
|
+
await expect(page.locator('[data-testid="Donate-example-1"] button[type="submit"]')).toContainText('Donate £12.99 now');
|
|
54
|
+
|
|
55
|
+
// clicking the submit button should take to donate.comicrelief.com
|
|
56
|
+
await page.locator('[data-testid="Donate-example-1"] button[type="submit"]').click();
|
|
57
|
+
|
|
58
|
+
await page.close();
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
test('Donate-example-1 - Monthly Donation', async ({ page }) => {
|
|
62
|
+
|
|
63
|
+
await page.goto('/#donate');
|
|
64
|
+
|
|
65
|
+
await expect(page.locator('[data-testid="Donate-example-1"]')).toBeVisible();
|
|
66
|
+
|
|
67
|
+
// click monthly donation
|
|
68
|
+
await page.locator('[data-testid="Donate-example-1"] [for="give-monthly--mship-1"]').click();
|
|
69
|
+
|
|
70
|
+
// moneybuy 1
|
|
71
|
+
await page.locator('[data-testid="Donate-example-1"] #mship-1--moneyBuy-box1[aria-label="£5.50"]').click();
|
|
72
|
+
await expect(page.locator('[data-testid="Donate-example-1"] input#mship-1--MoneyBuy-userInput')).toHaveValue('5.50');
|
|
73
|
+
|
|
74
|
+
let moneybuyOneButtonText = await page.locator('[data-testid="Donate-example-1"] button[type="submit"]').textContent();
|
|
75
|
+
console.log('buttonText:', moneybuyOneButtonText);
|
|
76
|
+
|
|
77
|
+
await expect(page.locator('[data-testid="Donate-example-1"] button[type="submit"]')).toContainText('Donate £5.50 monthly');
|
|
78
|
+
|
|
79
|
+
// moneybuy 2
|
|
80
|
+
await page.locator('[data-testid="Donate-example-1"] #mship-1--moneyBuy-box2[aria-label="£10.00"]').click();
|
|
81
|
+
await expect(page.locator('[data-testid="Donate-example-1"] input#mship-1--MoneyBuy-userInput')).toHaveValue('10');
|
|
82
|
+
|
|
83
|
+
let moneybuyTwoButtonText = await page.locator('[data-testid="Donate-example-1"] button[type="submit"]').textContent();
|
|
84
|
+
console.log('buttonText:', moneybuyTwoButtonText);
|
|
85
|
+
|
|
86
|
+
await expect(page.locator('[data-testid="Donate-example-1"] button[type="submit"]')).toContainText('Donate £10 monthly');
|
|
87
|
+
|
|
88
|
+
// moneybuy 3
|
|
89
|
+
await page.locator('[data-testid="Donate-example-1"] #mship-1--moneyBuy-box3[aria-label="£20.00"]').click();
|
|
90
|
+
await expect(page.locator('[data-testid="Donate-example-1"] input#mship-1--MoneyBuy-userInput')).toHaveValue('20');
|
|
91
|
+
|
|
92
|
+
let moneybuyThreeButtonText = await page.locator('[data-testid="Donate-example-1"] button[type="submit"]').textContent();
|
|
93
|
+
console.log('buttonText:', moneybuyThreeButtonText);
|
|
94
|
+
|
|
95
|
+
await expect(page.locator('[data-testid="Donate-example-1"] button[type="submit"]')).toContainText('Donate £20 monthly');
|
|
96
|
+
|
|
97
|
+
// amount field validation
|
|
98
|
+
await page.locator('[data-testid="Donate-example-1"] input#mship-1--MoneyBuy-userInput').fill('');
|
|
99
|
+
|
|
100
|
+
// enter amount 0 should show error message
|
|
101
|
+
await page.locator('[data-testid="Donate-example-1"] input#mship-1--MoneyBuy-userInput').type('0');
|
|
102
|
+
await expect(page.locator('[data-testid="Donate-example-1"] p:nth-child(4)')).toContainText('Please enter an amount between £1 and £25000 and up to 2 decimal places');
|
|
103
|
+
|
|
104
|
+
// enter amount 25001 should show error message
|
|
105
|
+
await page.locator('[data-testid="Donate-example-1"] input#mship-1--MoneyBuy-userInput').fill('');
|
|
106
|
+
await page.locator('[data-testid="Donate-example-1"] input#mship-1--MoneyBuy-userInput').type('25001');
|
|
107
|
+
await expect(page.locator('[data-testid="Donate-example-1"] p:nth-child(4)')).toContainText('Please enter an amount between £1 and £25000 and up to 2 decimal places');
|
|
108
|
+
|
|
109
|
+
// enter own amount in decimals should not show error message
|
|
110
|
+
await page.locator('[data-testid="Donate-example-1"] input#mship-1--MoneyBuy-userInput').fill('');
|
|
111
|
+
await page.locator('[data-testid="Donate-example-1"] input#mship-1--MoneyBuy-userInput').type('12.99');
|
|
112
|
+
await expect(page.locator('[data-testid="Donate-example-1"] button[type="submit"]')).toContainText('Donate £12.99 monthly');
|
|
113
|
+
|
|
114
|
+
// clicking the submit button should take to donate.comicrelief.com
|
|
115
|
+
await page.locator('[data-testid="Donate-example-1"] button[type="submit"]').click();
|
|
116
|
+
|
|
117
|
+
await page.close();
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
test('Donate-example-3 - high value cart', async ({ page }) => {
|
|
121
|
+
|
|
122
|
+
await page.goto('/#donate');
|
|
123
|
+
|
|
124
|
+
await expect(page.locator('[data-testid="Donate-example-3"]')).toBeVisible();
|
|
125
|
+
|
|
126
|
+
// moneybuy 1
|
|
127
|
+
await page.locator('[data-testid="Donate-example-3"] #mship-2--moneyBuy-box1[aria-label="£7777"]').click();
|
|
128
|
+
await expect(page.locator('[data-testid="Donate-example-3"] input#mship-2--MoneyBuy-userInput')).toHaveValue('7777');
|
|
129
|
+
|
|
130
|
+
let moneybuyOneButtonText = await page.locator('[data-testid="Donate-example-3"] button[type="submit"]').textContent();
|
|
131
|
+
console.log('buttonText:', moneybuyOneButtonText);
|
|
132
|
+
|
|
133
|
+
await expect(page.locator('[data-testid="Donate-example-3"] button[type="submit"]')).toContainText('Donate £7777 now');
|
|
134
|
+
|
|
135
|
+
// moneybuy 2
|
|
136
|
+
await page.locator('[data-testid="Donate-example-3"] #mship-2--moneyBuy-box2[aria-label="£8888"]').click();
|
|
137
|
+
await expect(page.locator('[data-testid="Donate-example-3"] input#mship-2--MoneyBuy-userInput')).toHaveValue('8888');
|
|
138
|
+
|
|
139
|
+
let moneybuyTwoButtonText = await page.locator('[data-testid="Donate-example-3"] button[type="submit"]').textContent();
|
|
140
|
+
console.log('buttonText:', moneybuyTwoButtonText);
|
|
141
|
+
|
|
142
|
+
await expect(page.locator('[data-testid="Donate-example-3"] button[type="submit"]')).toContainText('Donate £8888 now');
|
|
143
|
+
|
|
144
|
+
// moneybuy 3
|
|
145
|
+
await page.locator('[data-testid="Donate-example-3"] #mship-2--moneyBuy-box3[aria-label="£9999"]').click();
|
|
146
|
+
await expect(page.locator('[data-testid="Donate-example-3"] input#mship-2--MoneyBuy-userInput')).toHaveValue('9999');
|
|
147
|
+
|
|
148
|
+
let moneybuyThreeButtonText = await page.locator('[data-testid="Donate-example-3"] button[type="submit"]').textContent();
|
|
149
|
+
console.log('buttonText:', moneybuyThreeButtonText);
|
|
150
|
+
|
|
151
|
+
await expect(page.locator('[data-testid="Donate-example-3"] button[type="submit"]')).toContainText('Donate £9999 now');
|
|
152
|
+
|
|
153
|
+
// amount field validation
|
|
154
|
+
await page.locator('[data-testid="Donate-example-3"] input#mship-2--MoneyBuy-userInput').fill('');
|
|
155
|
+
|
|
156
|
+
// enter amount 0 should show error message
|
|
157
|
+
await page.locator('[data-testid="Donate-example-3"] input#mship-2--MoneyBuy-userInput').type('0');
|
|
158
|
+
await expect(page.locator('[data-testid="Donate-example-3"] p:nth-child(4)')).toContainText('Please enter an amount between £1 and £25000 and up to 2 decimal places');
|
|
159
|
+
|
|
160
|
+
// enter amount 25001 should show error message
|
|
161
|
+
await page.locator('[data-testid="Donate-example-3"] input#mship-2--MoneyBuy-userInput').fill('');
|
|
162
|
+
await page.locator('[data-testid="Donate-example-3"] input#mship-2--MoneyBuy-userInput').type('25001');
|
|
163
|
+
await expect(page.locator('[data-testid="Donate-example-3"] p:nth-child(4)')).toContainText('Please enter an amount between £1 and £25000 and up to 2 decimal places');
|
|
164
|
+
|
|
165
|
+
// enter own amount in decimals should not show error message
|
|
166
|
+
await page.locator('[data-testid="Donate-example-3"] input#mship-2--MoneyBuy-userInput').fill('');
|
|
167
|
+
await page.locator('[data-testid="Donate-example-3"] input#mship-2--MoneyBuy-userInput').type('22000');
|
|
168
|
+
await expect(page.locator('[data-testid="Donate-example-3"] button[type="submit"]')).toContainText('Donate £22000 now');
|
|
169
|
+
|
|
170
|
+
// clicking the submit button should take to donate.comicrelief.com
|
|
171
|
+
await page.locator('[data-testid="Donate-example-3"] button[type="submit"]').click();
|
|
172
|
+
|
|
173
|
+
await page.close();
|
|
174
|
+
});
|
|
175
|
+
|
|
176
|
+
test('Donate-example-5 - Single Giving', async ({ page }) => {
|
|
177
|
+
|
|
178
|
+
await page.goto('/#donate');
|
|
179
|
+
|
|
180
|
+
await expect(page.locator('[data-testid="Donate-example-5"]')).toBeVisible();
|
|
181
|
+
|
|
182
|
+
// moneybuy 1
|
|
183
|
+
await page.locator('[data-testid="Donate-example-5"] #mship-3--moneyBuy-box1[aria-label="£10"]').click();
|
|
184
|
+
await expect(page.locator('[data-testid="Donate-example-5"] input#mship-3--MoneyBuy-userInput')).toHaveValue('10');
|
|
185
|
+
|
|
186
|
+
let moneybuyOneButtonText = await page.locator('[data-testid="Donate-example-5"] button[type="submit"]').textContent();
|
|
187
|
+
console.log('buttonText:', moneybuyOneButtonText);
|
|
188
|
+
|
|
189
|
+
await expect(page.locator('[data-testid="Donate-example-5"] button[type="submit"]')).toContainText('Donate £10 now');
|
|
190
|
+
|
|
191
|
+
// moneybuy 2
|
|
192
|
+
await page.locator('[data-testid="Donate-example-5"] #mship-3--moneyBuy-box2[aria-label="£20"]').click();
|
|
193
|
+
await expect(page.locator('[data-testid="Donate-example-5"] input#mship-3--MoneyBuy-userInput')).toHaveValue('20');
|
|
194
|
+
|
|
195
|
+
let moneybuyTwoButtonText = await page.locator('[data-testid="Donate-example-5"] button[type="submit"]').textContent();
|
|
196
|
+
console.log('buttonText:', moneybuyTwoButtonText);
|
|
197
|
+
|
|
198
|
+
await expect(page.locator('[data-testid="Donate-example-5"] button[type="submit"]')).toContainText('Donate £20 now');
|
|
199
|
+
|
|
200
|
+
// moneybuy 3
|
|
201
|
+
await page.locator('[data-testid="Donate-example-5"] #mship-3--moneyBuy-box3[aria-label="£30"]').click();
|
|
202
|
+
await expect(page.locator('[data-testid="Donate-example-5"] input#mship-3--MoneyBuy-userInput')).toHaveValue('30');
|
|
203
|
+
|
|
204
|
+
let moneybuyThreeButtonText = await page.locator('[data-testid="Donate-example-5"] button[type="submit"]').textContent();
|
|
205
|
+
console.log('buttonText:', moneybuyThreeButtonText);
|
|
206
|
+
|
|
207
|
+
await expect(page.locator('[data-testid="Donate-example-5"] button[type="submit"]')).toContainText('Donate £30 now');
|
|
208
|
+
|
|
209
|
+
// amount field validation
|
|
210
|
+
await page.locator('[data-testid="Donate-example-5"] input#mship-3--MoneyBuy-userInput').fill('');
|
|
211
|
+
|
|
212
|
+
// enter amount 0 should show error message
|
|
213
|
+
await page.locator('[data-testid="Donate-example-5"] input#mship-3--MoneyBuy-userInput').type('0');
|
|
214
|
+
await expect(page.locator('[data-testid="Donate-example-5"] p:nth-child(4)')).toContainText('Please enter an amount between £1 and £25000 and up to 2 decimal places');
|
|
215
|
+
|
|
216
|
+
// enter amount 25001 should show error message
|
|
217
|
+
await page.locator('[data-testid="Donate-example-5"] input#mship-3--MoneyBuy-userInput').fill('');
|
|
218
|
+
await page.locator('[data-testid="Donate-example-5"] input#mship-3--MoneyBuy-userInput').type('25001');
|
|
219
|
+
await expect(page.locator('[data-testid="Donate-example-5"] p:nth-child(4)')).toContainText('Please enter an amount between £1 and £25000 and up to 2 decimal places');
|
|
220
|
+
|
|
221
|
+
// enter own amount in decimals should not show error message
|
|
222
|
+
await page.locator('[data-testid="Donate-example-5"] input#mship-3--MoneyBuy-userInput').fill('');
|
|
223
|
+
await page.locator('[data-testid="Donate-example-5"] input#mship-3--MoneyBuy-userInput').type('20.01');
|
|
224
|
+
await expect(page.locator('[data-testid="Donate-example-5"] button[type="submit"]')).toContainText('Donate £20.01 now');
|
|
225
|
+
|
|
226
|
+
// clicking the submit button should take to donate.comicrelief.com
|
|
227
|
+
await page.locator('[data-testid="Donate-example-5"] button[type="submit"]').click();
|
|
228
|
+
|
|
229
|
+
await page.close();
|
|
230
|
+
});
|
|
231
|
+
|
|
232
|
+
test('Donate-example-7 - Single Giving "No Money Buys"', async ({ page }) => {
|
|
233
|
+
|
|
234
|
+
await page.goto('/#donate');
|
|
235
|
+
|
|
236
|
+
await expect(page.locator('[data-testid="Donate-example-7"]')).toBeVisible();
|
|
237
|
+
|
|
238
|
+
await expect(page.locator('[data-testid="Donate-example-7"] button[type="submit"]')).toContainText('Donate £20');
|
|
239
|
+
|
|
240
|
+
// amount field validation
|
|
241
|
+
await page.locator('[data-testid="Donate-example-7"] input#mship-4--MoneyBuy-userInput').fill('');
|
|
242
|
+
|
|
243
|
+
// enter amount 0 should show error message
|
|
244
|
+
await page.locator('[data-testid="Donate-example-7"] input#mship-4--MoneyBuy-userInput').type('0');
|
|
245
|
+
await expect(page.locator('[data-testid="Donate-example-7"] p:nth-child(3)')).toContainText('Please enter an amount between £1 and £25000 and up to 2 decimal places');
|
|
246
|
+
|
|
247
|
+
// enter amount 25001 should show error message
|
|
248
|
+
await page.locator('[data-testid="Donate-example-7"] input#mship-4--MoneyBuy-userInput').fill('');
|
|
249
|
+
await page.locator('[data-testid="Donate-example-7"] input#mship-4--MoneyBuy-userInput').type('25001');
|
|
250
|
+
await expect(page.locator('[data-testid="Donate-example-7"] p:nth-child(3)')).toContainText('Please enter an amount between £1 and £25000 and up to 2 decimal places');
|
|
251
|
+
|
|
252
|
+
// enter own amount in decimals should not show error message
|
|
253
|
+
await page.locator('[data-testid="Donate-example-7"] input#mship-4--MoneyBuy-userInput').fill('');
|
|
254
|
+
await page.locator('[data-testid="Donate-example-7"] input#mship-4--MoneyBuy-userInput').type('20.01');
|
|
255
|
+
await expect(page.locator('[data-testid="Donate-example-7"] button[type="submit"]')).toContainText('Donate £20.01');
|
|
256
|
+
|
|
257
|
+
// clicking the submit button should take to donate.comicrelief.com
|
|
258
|
+
await page.locator('[data-testid="Donate-example-7"] button[type="submit"]').click();
|
|
259
|
+
|
|
260
|
+
await page.close();
|
|
261
|
+
});
|
|
262
|
+
|
|
263
|
+
test('Donate-example-9 - Single Giving "No Money Buys" with overridden manual input value', async ({ page }) => {
|
|
264
|
+
|
|
265
|
+
await page.goto('/#donate');
|
|
266
|
+
|
|
267
|
+
await expect(page.locator('[data-testid="Donate-example-9"]')).toBeVisible();
|
|
268
|
+
|
|
269
|
+
await expect(page.locator('[data-testid="Donate-example-9"] button[type="submit"]')).toContainText('Donate £567.89');
|
|
270
|
+
|
|
271
|
+
// amount field validation
|
|
272
|
+
await page.locator('[data-testid="Donate-example-9"] input#mship-4--MoneyBuy-userInput').fill('');
|
|
273
|
+
|
|
274
|
+
// enter amount 0 should show error message
|
|
275
|
+
await page.locator('[data-testid="Donate-example-9"] input#mship-4--MoneyBuy-userInput').type('0');
|
|
276
|
+
await expect(page.locator('[data-testid="Donate-example-9"] p:nth-child(3)')).toContainText('Please enter an amount between £1 and £25000 and up to 2 decimal places');
|
|
277
|
+
|
|
278
|
+
// enter amount 25001 should show error message
|
|
279
|
+
await page.locator('[data-testid="Donate-example-9"] input#mship-4--MoneyBuy-userInput').fill('');
|
|
280
|
+
await page.locator('[data-testid="Donate-example-9"] input#mship-4--MoneyBuy-userInput').type('25001');
|
|
281
|
+
await expect(page.locator('[data-testid="Donate-example-9"] p:nth-child(3)')).toContainText('Please enter an amount between £1 and £25000 and up to 2 decimal places');
|
|
282
|
+
|
|
283
|
+
// enter own amount in decimals should not show error message
|
|
284
|
+
await page.locator('[data-testid="Donate-example-9"] input#mship-4--MoneyBuy-userInput').fill('');
|
|
285
|
+
await page.locator('[data-testid="Donate-example-9"] input#mship-4--MoneyBuy-userInput').type('20.01');
|
|
286
|
+
await expect(page.locator('[data-testid="Donate-example-9"] button[type="submit"]')).toContainText('Donate £20.01');
|
|
287
|
+
|
|
288
|
+
// clicking the submit button should take to donate.comicrelief.com
|
|
289
|
+
await page.locator('[data-testid="Donate-example-9"] button[type="submit"]').click();
|
|
290
|
+
|
|
291
|
+
await page.close();
|
|
292
|
+
});
|
|
293
|
+
});
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
const { test, expect } = require('@playwright/test');
|
|
2
|
+
|
|
3
|
+
test.describe('Email Signup Form component', () => {
|
|
4
|
+
test('Email SignUp Form', async ({ page }) => {
|
|
5
|
+
|
|
6
|
+
await page.goto('/#emailsignupform');
|
|
7
|
+
|
|
8
|
+
await expect(page.locator('[data-testid="EmailSignUpForm-example-1"]')).toBeVisible();
|
|
9
|
+
await expect(page.locator('[data-testid="EmailSignUpForm-example-1"] #first-name')).toBeVisible();
|
|
10
|
+
await expect(page.locator('[data-testid="EmailSignUpForm-example-1"] #last-name')).toBeVisible();
|
|
11
|
+
await expect(page.locator('[data-testid="EmailSignUpForm-example-1"] #email')).toBeVisible();
|
|
12
|
+
|
|
13
|
+
// firstname field
|
|
14
|
+
const firstnamePlaceholder = page.locator('[aria-describedby="first-name"]');
|
|
15
|
+
|
|
16
|
+
// Get the 'placeholder' attribute
|
|
17
|
+
const placeholderAttribute = await firstnamePlaceholder.getAttribute('placeholder');
|
|
18
|
+
|
|
19
|
+
// Verify the 'placeholder' attribute
|
|
20
|
+
expect(placeholderAttribute).toBe('Enter your first name');
|
|
21
|
+
|
|
22
|
+
// validate firstname field
|
|
23
|
+
await page.locator('[data-testid="EmailSignUpForm-example-1"] #first-name').type('dwe$%£34');
|
|
24
|
+
await page.locator('[data-testid="EmailSignUpForm-example-1"] #last-name').type('dwe$%£34');
|
|
25
|
+
|
|
26
|
+
// firstname with special chars should show error message
|
|
27
|
+
await expect(page.locator('label[for="first-name"] div ~ span')).toContainText('This field only accepts letters and \' - and must start with a letter');
|
|
28
|
+
|
|
29
|
+
// firstname starting with a space should show error message
|
|
30
|
+
await page.locator('[data-testid="EmailSignUpForm-example-1"] #first-name').fill('');
|
|
31
|
+
await page.locator('[data-testid="EmailSignUpForm-example-1"] #first-name').type(' test firstname');
|
|
32
|
+
await expect(page.locator('label[for="first-name"] div ~ span')).toContainText('This field only accepts letters and \' - and must start with a letter');
|
|
33
|
+
|
|
34
|
+
// firstname starting with numbers should show error message
|
|
35
|
+
await page.locator('[data-testid="EmailSignUpForm-example-1"] #first-name').fill('');
|
|
36
|
+
await page.locator('[data-testid="EmailSignUpForm-example-1"] #first-name').type('1234567');
|
|
37
|
+
await expect(page.locator('label[for="first-name"] div ~ span')).toContainText('This field only accepts letters and \' - and must start with a letter');
|
|
38
|
+
await page.locator('[data-testid="EmailSignUpForm-example-1"] #first-name').fill('');
|
|
39
|
+
|
|
40
|
+
// lastname
|
|
41
|
+
const lastnamePlaceholder = page.locator('[aria-describedby="last-name"]');
|
|
42
|
+
|
|
43
|
+
// Get the 'placeholder' attribute
|
|
44
|
+
const lastnamePlaceholderAttribute = await lastnamePlaceholder.getAttribute('placeholder');
|
|
45
|
+
|
|
46
|
+
// Verify the 'placeholder' attribute
|
|
47
|
+
expect(lastnamePlaceholderAttribute).toBe('Enter your last name');
|
|
48
|
+
|
|
49
|
+
// validate lastname field
|
|
50
|
+
await page.locator('[data-testid="EmailSignUpForm-example-1"] #last-name').fill('');
|
|
51
|
+
await page.locator('[data-testid="EmailSignUpForm-example-1"] #last-name').type('dwe$%£34');
|
|
52
|
+
|
|
53
|
+
// lastname with special chars should show error message
|
|
54
|
+
await expect(page.locator('label[for="last-name"] div ~ span')).toContainText('This field only accepts letters and \' - and must start with a letter');
|
|
55
|
+
|
|
56
|
+
// lastname starting with a space should show error message
|
|
57
|
+
await page.locator('[data-testid="EmailSignUpForm-example-1"] #last-name').fill('');
|
|
58
|
+
await page.locator('[data-testid="EmailSignUpForm-example-1"] #last-name').type(' test firstname');
|
|
59
|
+
await expect(page.locator('label[for="last-name"] div ~ span')).toContainText('This field only accepts letters and \' - and must start with a letter');
|
|
60
|
+
|
|
61
|
+
// lastname starting with numbers should show error message
|
|
62
|
+
await page.locator('[data-testid="EmailSignUpForm-example-1"] #last-name').fill('');
|
|
63
|
+
await page.locator('[data-testid="EmailSignUpForm-example-1"] #last-name').type('1234567');
|
|
64
|
+
await expect(page.locator('label[for="last-name"] div ~ span')).toContainText('This field only accepts letters and \' - and must start with a letter');
|
|
65
|
+
await page.locator('[data-testid="EmailSignUpForm-example-1"] #last-name').fill('');
|
|
66
|
+
|
|
67
|
+
// email
|
|
68
|
+
const emailPlaceholder = page.locator('[aria-describedby="email"]');
|
|
69
|
+
|
|
70
|
+
// Get the 'placeholder' attribute
|
|
71
|
+
const emailPlaceholderAttribute = await emailPlaceholder.getAttribute('placeholder');
|
|
72
|
+
|
|
73
|
+
// Verify the 'placeholder' attribute
|
|
74
|
+
expect(emailPlaceholderAttribute).toBe('example@youremail.com');
|
|
75
|
+
|
|
76
|
+
// validate email field
|
|
77
|
+
await page.locator('[data-testid="EmailSignUpForm-example-1"] #email').type('email-signup@email.sls.comicrelief.com');
|
|
78
|
+
await page.locator('[data-testid="EmailSignUpForm-example-1"] #email').fill(''); // clear the email field
|
|
79
|
+
await page.locator('[data-testid="EmailSignUpForm-example-1"] #last-name').click();
|
|
80
|
+
await expect(page.locator('label[for="email"] div ~ span')).toContainText('Please enter your email address');
|
|
81
|
+
|
|
82
|
+
// email that has : should show error message
|
|
83
|
+
await page.locator('[data-testid="EmailSignUpForm-example-1"] #email').fill(''); // clear the email field
|
|
84
|
+
await page.locator('[data-testid="EmailSignUpForm-example-1"] #email').type('test:@£$%£test@comicrelief.com');
|
|
85
|
+
await page.locator('[data-testid="EmailSignUpForm-example-1"] #last-name').click();
|
|
86
|
+
await expect(page.locator('label[for="email"] div ~ span')).toContainText('Please enter a valid email address');
|
|
87
|
+
|
|
88
|
+
// email that has mix of special chars that's valid and not valid should show error message
|
|
89
|
+
await page.locator('[data-testid="EmailSignUpForm-example-1"] #email').fill(''); // clear the email field
|
|
90
|
+
await page.locator('[data-testid="EmailSignUpForm-example-1"] #email').type('Test0-9!#$%&\'*+/=?^_{|}~-@comicrelief_9-8.com.uk');
|
|
91
|
+
await page.locator('[data-testid="EmailSignUpForm-example-1"] #last-name').click();
|
|
92
|
+
await expect(page.locator('label[for="email"] div ~ span')).toBeHidden('');
|
|
93
|
+
|
|
94
|
+
// enter valid inputs should not show error messages
|
|
95
|
+
await page.locator('[data-testid="EmailSignUpForm-example-1"] #first-name').fill('');
|
|
96
|
+
await page.locator('[data-testid="EmailSignUpForm-example-1"] #first-name').type('test firstname');
|
|
97
|
+
|
|
98
|
+
await page.locator('[data-testid="EmailSignUpForm-example-1"] #last-name').fill('');
|
|
99
|
+
await page.locator('[data-testid="EmailSignUpForm-example-1"] #last-name').type('test lastname');
|
|
100
|
+
|
|
101
|
+
await page.locator('[data-testid="EmailSignUpForm-example-1"] #email').fill(''); // clear the email field
|
|
102
|
+
await page.locator('[data-testid="EmailSignUpForm-example-1"] #email').type('email-signup@email.sls.comicrelief.com');
|
|
103
|
+
|
|
104
|
+
// submit the ESU form
|
|
105
|
+
await page.locator('[data-testid="EmailSignUpForm-example-1"] button[type="submit"] > span').click();
|
|
106
|
+
|
|
107
|
+
await page.close();
|
|
108
|
+
});
|
|
109
|
+
});
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
const { test, expect } = require('@playwright/test');
|
|
2
|
+
|
|
3
|
+
test.describe('footer component', () => {
|
|
4
|
+
test('Standard footer', async ({ page }) => {
|
|
5
|
+
|
|
6
|
+
await page.goto('/#footer');
|
|
7
|
+
|
|
8
|
+
await expect(page.locator('[data-testid="Footer-example-1"]')).toBeVisible();
|
|
9
|
+
// footer social icons should be visible
|
|
10
|
+
await expect(page.locator('[data-preview="Footer"] > div > div:nth-child(2) > footer[role="banner"] [title="Check out our Facebook page"]')).toBeVisible();
|
|
11
|
+
await expect(page.locator('[data-preview="Footer"] > div > div:nth-child(2) > footer[role="banner"] [title="Check out our Instagram account"]')).toBeVisible();
|
|
12
|
+
await expect(page.locator('[data-preview="Footer"] > div > div:nth-child(2) > footer[role="banner"] [title="Check out our Twitter account"]')).toBeVisible();
|
|
13
|
+
await expect(page.locator('[data-preview="Footer"] > div > div:nth-child(2) > footer[role="banner"] [title="Check out our YouTube channel"]')).toBeVisible();
|
|
14
|
+
|
|
15
|
+
// CR logo in the footer should be visible
|
|
16
|
+
await expect(page.locator('[data-preview="Footer"] > div > div:nth-child(2) > footer[role="banner"] [title="Go to Comic Relief homepage"]')).toBeVisible();
|
|
17
|
+
|
|
18
|
+
// footer menu should be visible
|
|
19
|
+
await expect(page.locator('[data-preview="Footer"] > div > div:nth-child(2) > footer[role="banner"] [aria-label="main-menu"]')).toBeVisible();
|
|
20
|
+
|
|
21
|
+
await page.close();
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
test('Overrides allowList functionality', async ({ page }) => {
|
|
25
|
+
|
|
26
|
+
await page.goto('/#footer');
|
|
27
|
+
|
|
28
|
+
await expect(page.locator('[data-testid="Footer-example-1"]')).toBeVisible();
|
|
29
|
+
// footer social icons should be visible
|
|
30
|
+
await expect(page.locator('[data-preview="Footer"] > div > div:nth-child(4) > footer[role="banner"] [title="Check out our Facebook page"]')).toBeVisible();
|
|
31
|
+
await expect(page.locator('[data-preview="Footer"] > div > div:nth-child(4) > footer[role="banner"] [title="Check out our Instagram account"]')).toBeVisible();
|
|
32
|
+
await expect(page.locator('[data-preview="Footer"] > div > div:nth-child(4) > footer[role="banner"] [title="Check out our Twitter account"]')).toBeVisible();
|
|
33
|
+
await expect(page.locator('[data-preview="Footer"] > div > div:nth-child(4) > footer[role="banner"] [title="Check out our YouTube channel"]')).toBeVisible();
|
|
34
|
+
|
|
35
|
+
// CR logo in the footer should be visible
|
|
36
|
+
await expect(page.locator('[data-preview="Footer"] > div > div:nth-child(4) > footer[role="banner"] [title="Go to Comic Relief homepage"]')).toBeVisible();
|
|
37
|
+
|
|
38
|
+
// footer menu should be visible
|
|
39
|
+
await expect(page.locator('[data-preview="Footer"] > div > div:nth-child(4) > footer[role="banner"] [aria-label="main-menu"]')).toBeVisible();
|
|
40
|
+
|
|
41
|
+
await page.close();
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
test('additional legal line footer', async ({ page }) => {
|
|
45
|
+
|
|
46
|
+
await page.goto('/#footer');
|
|
47
|
+
|
|
48
|
+
await expect(page.locator('[data-testid="Footer-example-1"]')).toBeVisible();
|
|
49
|
+
|
|
50
|
+
// legal line to the top of the footer should be present
|
|
51
|
+
await expect(page.locator('[data-preview="Footer"] > div > div:nth-child(6) > footer[role="banner"] > div > p')).toContainText('MR. MEN ™ LITTLE MISS ™ © 2022 THOIP (a SANRIO Company). All rights reserved.');
|
|
52
|
+
|
|
53
|
+
// footer social icons should be visible
|
|
54
|
+
await expect(page.locator('[data-preview="Footer"] > div > div:nth-child(4) > footer[role="banner"] [title="Check out our Facebook page"]')).toBeVisible();
|
|
55
|
+
await expect(page.locator('[data-preview="Footer"] > div > div:nth-child(6) > footer[role="banner"] [title="Check out our Instagram account"]')).toBeVisible();
|
|
56
|
+
await expect(page.locator('[data-preview="Footer"] > div > div:nth-child(6) > footer[role="banner"] [title="Check out our Twitter account"]')).toBeVisible();
|
|
57
|
+
await expect(page.locator('[data-preview="Footer"] > div > div:nth-child(6) > footer[role="banner"] [title="Check out our YouTube channel"]')).toBeVisible();
|
|
58
|
+
|
|
59
|
+
// CR logo in the footer should be visible
|
|
60
|
+
await expect(page.locator('[data-preview="Footer"] > div > div:nth-child(6) > footer[role="banner"] [title="Go to Comic Relief homepage"]')).toBeVisible();
|
|
61
|
+
|
|
62
|
+
// footer menu should be visible
|
|
63
|
+
await expect(page.locator('[data-preview="Footer"] > div > div:nth-child(6) > footer[role="banner"] [aria-label="main-menu"]')).toBeVisible();
|
|
64
|
+
|
|
65
|
+
await page.close();
|
|
66
|
+
});
|
|
67
|
+
});
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
const { test, expect } = require('@playwright/test');
|
|
2
|
+
|
|
3
|
+
test.describe('header component', () => {
|
|
4
|
+
test('Comic Relief header', async ({ page }) => {
|
|
5
|
+
|
|
6
|
+
await page.goto('/#header');
|
|
7
|
+
|
|
8
|
+
await expect(page.locator('[data-testid="Header-example-1"]')).toBeVisible();
|
|
9
|
+
// donate locator
|
|
10
|
+
await expect(page.locator('[data-testid="Header-example-1"] header[role="banner"] a[href="/donation"]')).toBeVisible();
|
|
11
|
+
// CR logo
|
|
12
|
+
await expect(page.locator('[data-testid="Header-example-1"] [title="Go to Comic Relief homepage"]')).toBeVisible();
|
|
13
|
+
// shop
|
|
14
|
+
await expect(page.locator('[data-testid="Header-example-1"] header[role="banner"] a[href*="/shop"]')).toBeVisible();
|
|
15
|
+
|
|
16
|
+
await page.close();
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
test('Sport Relief header', async ({ page }) => {
|
|
20
|
+
|
|
21
|
+
await page.goto('/#header');
|
|
22
|
+
|
|
23
|
+
await expect(page.locator('[data-testid="Header-example-3"]')).toBeVisible();
|
|
24
|
+
// donate locator
|
|
25
|
+
await expect(page.locator('[data-testid="Header-example-3"] header[role="banner"] a[href="/donation"]')).toBeVisible();
|
|
26
|
+
// SR logo
|
|
27
|
+
await expect(page.locator('[data-testid="Header-example-3"] header[role="banner"] a[href="/sportrelief"]')).toBeVisible();
|
|
28
|
+
// shop
|
|
29
|
+
await expect(page.locator('[data-testid="Header-example-3"] header[role="banner"] a[href*="/shop"]')).toBeVisible();
|
|
30
|
+
|
|
31
|
+
await page.close();
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
test('Pride header', async ({ page }) => {
|
|
35
|
+
|
|
36
|
+
await page.goto('/#header');
|
|
37
|
+
|
|
38
|
+
await expect(page.locator('[data-testid="Header-example-5"]')).toBeVisible();
|
|
39
|
+
// donate locator
|
|
40
|
+
await expect(page.locator('[data-testid="Header-example-5"] header[role="banner"] a[href="/donation"]')).toBeVisible();
|
|
41
|
+
// CR logo
|
|
42
|
+
await expect(page.locator('[data-testid="Header-example-5"] [title="Go to Comic Relief homepage"]')).toBeVisible();
|
|
43
|
+
// shop
|
|
44
|
+
await expect(page.locator('[data-testid="Header-example-5"] header[role="banner"] a[href*="/shop"]')).toBeVisible();
|
|
45
|
+
|
|
46
|
+
await page.close();
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
test('Comic Relief header with Search', async ({ page }) => {
|
|
50
|
+
|
|
51
|
+
await page.goto('/#header');
|
|
52
|
+
|
|
53
|
+
await expect(page.locator('[data-testid="Header-example-7"]')).toBeVisible();
|
|
54
|
+
// donate locator
|
|
55
|
+
await expect(page.locator('[data-testid="Header-example-7"] header[role="banner"] a[href="/donation"]')).toBeVisible();
|
|
56
|
+
// CR logo
|
|
57
|
+
await expect(page.locator('[data-testid="Header-example-7"] [title="Go to Comic Relief homepage"]')).toBeVisible();
|
|
58
|
+
// shop
|
|
59
|
+
await expect(page.locator('[data-testid="Header-example-7"] header[role="banner"] a[href*="/shop"]')).toBeVisible();
|
|
60
|
+
// search
|
|
61
|
+
await expect(page.locator('[data-testid="Header-example-7"] header[role="banner"] a[href="/search"]')).toBeVisible();
|
|
62
|
+
|
|
63
|
+
await page.close();
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
test('Comic Relief header with Search and Shop', async ({ page }) => {
|
|
67
|
+
|
|
68
|
+
await page.goto('/#header');
|
|
69
|
+
|
|
70
|
+
await expect(page.locator('[data-testid="Header-example-9"]')).toBeVisible();
|
|
71
|
+
// donate locator
|
|
72
|
+
await expect(page.locator('[data-testid="Header-example-9"] header[role="banner"] a[href="/donation"]')).toBeVisible();
|
|
73
|
+
// CR logo
|
|
74
|
+
await expect(page.locator('[data-testid="Header-example-9"] [title="Go to Comic Relief homepage"]')).toBeVisible();
|
|
75
|
+
// shop icon
|
|
76
|
+
await expect(page.locator('[data-testid="Header-example-9"] header[role="banner"] [title="Shop"]')).toBeVisible();
|
|
77
|
+
// search
|
|
78
|
+
await expect(page.locator('[data-testid="Header-example-9"] header[role="banner"] a[href="/search"]')).toBeVisible();
|
|
79
|
+
|
|
80
|
+
await page.close();
|
|
81
|
+
});
|
|
82
|
+
});
|