239 lines
9.6 KiB
TypeScript
239 lines
9.6 KiB
TypeScript
import { test, expect } from '@playwright/test';
|
|
import translations from '../client/i18n/locales/english/translations.json';
|
|
|
|
test.use({ storageState: 'playwright/.auth/certified-user.json' });
|
|
|
|
test.describe('Certification page - Non Microsoft', () => {
|
|
test.beforeEach(async ({ page }) => {
|
|
await page.goto('/certification/certifieduser/responsive-web-design');
|
|
});
|
|
|
|
test('The certificate page has a donation section', async ({ page }) => {
|
|
const donationSection = page.getByTestId('donation-section');
|
|
await expect(donationSection).toBeVisible();
|
|
|
|
const donationText = donationSection.getByTestId('donation-text');
|
|
await expect(donationText).toHaveText(translations.donate['only-you']);
|
|
|
|
const donationForm = donationSection.getByTestId('donation-tier-selector');
|
|
await expect(donationForm).toBeVisible();
|
|
});
|
|
|
|
test('Verify the certificate itself', async ({ page }) => {
|
|
const certWrapper = page.getByTestId('cert-wrapper');
|
|
await expect(certWrapper).toBeVisible();
|
|
|
|
const header = certWrapper.getByTestId('cert-header');
|
|
await expect(header).toBeVisible();
|
|
const fccLogo = header.getByTestId('cert-fcc-logo');
|
|
await expect(fccLogo).toBeVisible();
|
|
// Non Microsoft certs should not have this one
|
|
const microsoftLogo = header.getByTestId('cert-microsoft-logo');
|
|
await expect(microsoftLogo).not.toBeVisible();
|
|
|
|
const certInfoContainer = certWrapper.getByTestId('cert-info-container');
|
|
await expect(certInfoContainer).toBeVisible();
|
|
const certTitle = certInfoContainer.getByTestId('certification-title');
|
|
await expect(certTitle).toHaveText(
|
|
translations.certification.title['Responsive Web Design']
|
|
);
|
|
|
|
const footer = certWrapper.getByTestId('cert-footer');
|
|
await expect(footer).toBeVisible();
|
|
const QunicySignature = footer.getByTestId('quincy-signature');
|
|
await expect(QunicySignature).toBeVisible();
|
|
// Non Microsoft certs should not have this one
|
|
const microsoftSignature = footer.getByTestId('microsoft-signature');
|
|
await expect(microsoftSignature).not.toBeVisible();
|
|
});
|
|
|
|
test('Validate certificate/social/project links', async ({ page }) => {
|
|
const certLink = page.getByTestId('cert-links');
|
|
await expect(certLink).toBeVisible();
|
|
|
|
const linkedinLink = certLink.getByTestId('linkedin-share-btn');
|
|
await expect(linkedinLink).toBeVisible();
|
|
await expect(linkedinLink).toHaveAttribute(
|
|
'href',
|
|
`https://www.linkedin.com/profile/add?startTask=CERTIFICATION_NAME&name=Responsive%20Web%20Design&organizationId=4831032&issueYear=2018&issueMonth=8&certUrl=https://freecodecamp.org/certification/certifieduser/responsive-web-design`
|
|
);
|
|
|
|
const twitterLink = certLink.getByTestId('twitter-share-btn');
|
|
await expect(twitterLink).toBeVisible();
|
|
await expect(twitterLink).toHaveAttribute(
|
|
'href',
|
|
`https://twitter.com/intent/tweet?text=I just earned the Responsive%20Web%20Design certification @freeCodeCamp! Check it out here: https://freecodecamp.org/certification/certifieduser/responsive-web-design`
|
|
);
|
|
|
|
const projectLinks = certLink.getByTestId('project-links');
|
|
await expect(projectLinks).toBeVisible();
|
|
|
|
const surveyFormLink = projectLinks.getByRole('link', {
|
|
name: 'Build a Survey Form'
|
|
});
|
|
await expect(surveyFormLink).toBeVisible();
|
|
await expect(surveyFormLink).toHaveAttribute(
|
|
'href',
|
|
'/learn/2022/responsive-web-design/build-a-survey-form-project/build-a-survey-form'
|
|
);
|
|
|
|
const tributePageLink = projectLinks.getByRole('link', {
|
|
name: 'Build a Tribute Page'
|
|
});
|
|
await expect(tributePageLink).toBeVisible();
|
|
await expect(tributePageLink).toHaveAttribute(
|
|
'href',
|
|
'/learn/2022/responsive-web-design/build-a-tribute-page-project/build-a-tribute-page'
|
|
);
|
|
|
|
const technicalDocumentationPageLink = projectLinks.getByRole('link', {
|
|
name: 'Build a Technical Documentation Page'
|
|
});
|
|
await expect(technicalDocumentationPageLink).toBeVisible();
|
|
await expect(technicalDocumentationPageLink).toHaveAttribute(
|
|
'href',
|
|
'/learn/2022/responsive-web-design/build-a-technical-documentation-page-project/build-a-technical-documentation-page'
|
|
);
|
|
|
|
const productLandingPageLink = projectLinks.getByRole('link', {
|
|
name: 'Build a Product Landing Page'
|
|
});
|
|
await expect(productLandingPageLink).toBeVisible();
|
|
await expect(productLandingPageLink).toHaveAttribute(
|
|
'href',
|
|
'/learn/2022/responsive-web-design/build-a-product-landing-page-project/build-a-product-landing-page'
|
|
);
|
|
|
|
const personalPortfolioWebpageLink = projectLinks.getByRole('link', {
|
|
name: 'Build a Personal Portfolio Webpage'
|
|
});
|
|
await expect(personalPortfolioWebpageLink).toBeVisible();
|
|
await expect(personalPortfolioWebpageLink).toHaveAttribute(
|
|
'href',
|
|
'/learn/2022/responsive-web-design/build-a-personal-portfolio-webpage-project/build-a-personal-portfolio-webpage'
|
|
);
|
|
|
|
await expect(
|
|
page.getByText(
|
|
'If you suspect that any of these projects violate the academic honesty policy, please report this to our team.'
|
|
)
|
|
).toBeVisible();
|
|
|
|
const policyLink = projectLinks.getByRole('link', {
|
|
name: 'academic honesty policy'
|
|
});
|
|
await expect(policyLink).toHaveAttribute(
|
|
'href',
|
|
'https://www.freecodecamp.org/news/academic-honesty-policy/'
|
|
);
|
|
|
|
const reportLink = projectLinks.getByRole('link', {
|
|
name: 'report this to our team'
|
|
});
|
|
await expect(reportLink).toHaveAttribute(
|
|
'href',
|
|
'/user/certifieduser/report-user'
|
|
);
|
|
});
|
|
});
|
|
|
|
test.describe('Certification page - Microsoft', () => {
|
|
test.beforeEach(async ({ page }) => {
|
|
await page.goto(
|
|
'certification/certifieduser/foundational-c-sharp-with-microsoft'
|
|
);
|
|
});
|
|
|
|
test('The certificate page has a donation section', async ({ page }) => {
|
|
const donationSection = page.getByTestId('donation-section');
|
|
await expect(donationSection).toBeVisible();
|
|
|
|
const donationText = donationSection.getByTestId('donation-text');
|
|
await expect(donationText).toHaveText(translations.donate['only-you']);
|
|
|
|
const donationForm = donationSection.getByTestId('donation-tier-selector');
|
|
await expect(donationForm).toBeVisible();
|
|
});
|
|
|
|
test('Verify the certificate itself', async ({ page }) => {
|
|
const certWrapper = page.getByTestId('cert-wrapper');
|
|
await expect(certWrapper).toBeVisible();
|
|
|
|
const header = certWrapper.getByTestId('cert-header');
|
|
await expect(header).toBeVisible();
|
|
const fccLogo = header.getByTestId('cert-fcc-logo');
|
|
await expect(fccLogo).toBeVisible();
|
|
// This is specific to Microsoft certs
|
|
const microsoftLogo = header.getByTestId('cert-microsoft-logo');
|
|
await expect(microsoftLogo).toBeVisible();
|
|
|
|
const certInfoContainer = certWrapper.getByTestId('cert-info-container');
|
|
await expect(certInfoContainer).toBeVisible();
|
|
const certTitle = certInfoContainer.getByTestId('certification-title');
|
|
await expect(certTitle).toHaveText(
|
|
translations.certification.title['Foundational C# with Microsoft']
|
|
);
|
|
|
|
const footer = certWrapper.getByTestId('cert-footer');
|
|
await expect(footer).toBeVisible();
|
|
const QunicySignature = footer.getByTestId('quincy-signature');
|
|
await expect(QunicySignature).toBeVisible();
|
|
// This is specific to Microsoft certs
|
|
const microsoftSignature = footer.getByTestId('microsoft-signature');
|
|
await expect(microsoftSignature).toBeVisible();
|
|
});
|
|
|
|
test('Validate certificate/social/project links', async ({ page }) => {
|
|
const certLink = page.getByTestId('cert-links');
|
|
await expect(certLink).toBeVisible();
|
|
|
|
const linkedinLink = certLink.getByTestId('linkedin-share-btn');
|
|
await expect(linkedinLink).toBeVisible();
|
|
await expect(linkedinLink).toHaveAttribute(
|
|
'href',
|
|
'https://www.linkedin.com/profile/add?startTask=CERTIFICATION_NAME&name=Foundational%20C%23%20with%20Microsoft&organizationId=4831032&issueYear=2023&issueMonth=9&certUrl=https://freecodecamp.org/certification/certifieduser/foundational-c-sharp-with-microsoft'
|
|
);
|
|
|
|
const twitterLink = certLink.getByTestId('twitter-share-btn');
|
|
await expect(twitterLink).toBeVisible();
|
|
await expect(twitterLink).toHaveAttribute(
|
|
'href',
|
|
'https://twitter.com/intent/tweet?text=I just earned the Foundational%20C%23%20with%20Microsoft certification @freeCodeCamp! Check it out here: https://freecodecamp.org/certification/certifieduser/foundational-c-sharp-with-microsoft'
|
|
);
|
|
|
|
const projectLinks = certLink.getByTestId('project-links');
|
|
await expect(projectLinks).toBeVisible();
|
|
|
|
const surveyFormLink = projectLinks.getByRole('link', {
|
|
name: 'Foundational C# with Microsoft Certification Exam'
|
|
});
|
|
await expect(surveyFormLink).toBeVisible();
|
|
await expect(surveyFormLink).toHaveAttribute(
|
|
'href',
|
|
'/learn/foundational-c-sharp-with-microsoft/foundational-c-sharp-with-microsoft-certification-exam/foundational-c-sharp-with-microsoft-certification-exam'
|
|
);
|
|
|
|
await expect(
|
|
page.getByText(
|
|
'If you suspect that any of these projects violate the academic honesty policy, please report this to our team.'
|
|
)
|
|
).toBeVisible();
|
|
|
|
const policyLink = projectLinks.getByRole('link', {
|
|
name: 'academic honesty policy'
|
|
});
|
|
await expect(policyLink).toHaveAttribute(
|
|
'href',
|
|
'https://www.freecodecamp.org/news/academic-honesty-policy/'
|
|
);
|
|
|
|
const reportLink = projectLinks.getByRole('link', {
|
|
name: 'report this to our team'
|
|
});
|
|
await expect(reportLink).toHaveAttribute(
|
|
'href',
|
|
'/user/certifieduser/report-user'
|
|
);
|
|
});
|
|
});
|