fix: update SEO on landing page (#40670)
This commit is contained in:
@ -7,7 +7,7 @@ const AsSeenIn = () => (
|
|||||||
<Row className='as-seen-in'>
|
<Row className='as-seen-in'>
|
||||||
<Col sm={8} smOffset={2} xs={12}>
|
<Col sm={8} smOffset={2} xs={12}>
|
||||||
<div className='text-center'>
|
<div className='text-center'>
|
||||||
<h1 className='big-heading'>As seen in:</h1>
|
<p className='big-heading'>As seen in:</p>
|
||||||
<AsFeatureLogo fill='light' />
|
<AsFeatureLogo fill='light' />
|
||||||
</div>
|
</div>
|
||||||
</Col>
|
</Col>
|
||||||
|
@ -19,7 +19,7 @@ const Certifications = ({ nodes, page }) => {
|
|||||||
return (
|
return (
|
||||||
<Row className='certification-section'>
|
<Row className='certification-section'>
|
||||||
<Col md={8} mdOffset={2} sm={10} smOffset={1} xs={12}>
|
<Col md={8} mdOffset={2} sm={10} smOffset={1} xs={12}>
|
||||||
<h1 className='big-heading'>Earn free verified certifications in:</h1>
|
<p className='big-heading'>Earn free verified certifications in:</p>
|
||||||
<ul data-test-label='certifications'>
|
<ul data-test-label='certifications'>
|
||||||
{superBlocks.map((superBlock, i) => (
|
{superBlocks.map((superBlock, i) => (
|
||||||
<li key={i}>
|
<li key={i}>
|
||||||
|
@ -30,14 +30,14 @@ function landingTop({ page }) {
|
|||||||
<Spacer />
|
<Spacer />
|
||||||
<Col lg={8} lgOffset={2} sm={10} smOffset={1} xs={12}>
|
<Col lg={8} lgOffset={2} sm={10} smOffset={1} xs={12}>
|
||||||
<h1 className='big-heading' data-test-label={`${page}-header`}>
|
<h1 className='big-heading' data-test-label={`${page}-header`}>
|
||||||
Learn to code at home.
|
Learn to code — for free.
|
||||||
</h1>
|
</h1>
|
||||||
<h1 className='big-heading '>Build projects.</h1>
|
<p className='big-heading'>Build projects.</p>
|
||||||
<h1 className='big-heading'>Earn certifications.</h1>
|
<p className='big-heading'>Earn certifications.</p>
|
||||||
<h2>
|
<p>
|
||||||
Since 2014, more than 40,000 freeCodeCamp.org graduates have gotten
|
Since 2014, more than 40,000 freeCodeCamp.org graduates have gotten
|
||||||
jobs at tech companies including:
|
jobs at tech companies including:
|
||||||
</h2>
|
</p>
|
||||||
<div className='logo-row'>
|
<div className='logo-row'>
|
||||||
<AppleLogo />
|
<AppleLogo />
|
||||||
<GoogleLogo />
|
<GoogleLogo />
|
||||||
|
@ -13,9 +13,9 @@ const Testimonials = () => {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div className='testimonials'>
|
<div className='testimonials'>
|
||||||
<h1 className='big-heading text-center'>
|
<p className='big-heading text-center'>
|
||||||
Here is what our alumni say about freeCodeCamp:
|
Here is what our alumni say about freeCodeCamp:
|
||||||
</h1>
|
</p>
|
||||||
<div className='testimonials-row' data-test-label='testimonial-cards'>
|
<div className='testimonials-row' data-test-label='testimonial-cards'>
|
||||||
{campers.map((camper, i) => {
|
{campers.map((camper, i) => {
|
||||||
let {
|
let {
|
||||||
|
@ -31,7 +31,7 @@ export const Landing = ({ page = 'landing' }) => {
|
|||||||
return (
|
return (
|
||||||
<Fragment>
|
<Fragment>
|
||||||
<Helmet>
|
<Helmet>
|
||||||
<title>Learn to Code for Free – Coding Courses for Busy People</title>
|
<title>Learn to Code — For Free — Coding Courses for Busy People</title>
|
||||||
</Helmet>
|
</Helmet>
|
||||||
<main className='landing-page'>
|
<main className='landing-page'>
|
||||||
<Grid>
|
<Grid>
|
||||||
|
@ -38,12 +38,15 @@ p.caption {
|
|||||||
color: var(--gray-15);
|
color: var(--gray-15);
|
||||||
}
|
}
|
||||||
|
|
||||||
.as-seen-in h1 {
|
.as-seen-in .big-heading {
|
||||||
color: var(--gray-15);
|
color: var(--gray-15);
|
||||||
}
|
}
|
||||||
|
|
||||||
.landing-page h1 {
|
.landing-page .big-heading {
|
||||||
|
height: 100%;
|
||||||
margin-bottom: 40px;
|
margin-bottom: 40px;
|
||||||
|
line-height: 1.1;
|
||||||
|
font-weight: 700;
|
||||||
}
|
}
|
||||||
|
|
||||||
.campers-images {
|
.campers-images {
|
||||||
@ -94,9 +97,10 @@ p.caption {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.cta-landing-section h2 {
|
.landing-top p {
|
||||||
font-size: 1.3rem;
|
font-size: 1.2rem;
|
||||||
font-weight: 400;
|
font-weight: bold;
|
||||||
|
margin: 0.6rem 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* testimonials */
|
/* testimonials */
|
||||||
@ -178,8 +182,8 @@ p.caption {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@media (min-width: 500px) {
|
@media (min-width: 500px) {
|
||||||
.cta-landing-section h2 {
|
.landing-top p {
|
||||||
font-size: 1.5rem;
|
font-size: 1.25rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -173,9 +173,7 @@ class DefaultLayout extends Component {
|
|||||||
meta={[
|
meta={[
|
||||||
{
|
{
|
||||||
name: 'description',
|
name: 'description',
|
||||||
content: `Learn to code at home. Build projects. Earn certifications. Since 2014,
|
content: `Learn to code — for free.`
|
||||||
more than 40,000 freeCodeCamp.org graduates have gotten jobs at tech
|
|
||||||
companies including Google, Apple, Amazon, and Microsoft.`
|
|
||||||
},
|
},
|
||||||
{ name: 'keywords', content: metaKeywords.join(', ') }
|
{ name: 'keywords', content: metaKeywords.join(', ') }
|
||||||
]}
|
]}
|
||||||
|
@ -77,7 +77,7 @@ export const LearnPage = ({
|
|||||||
const hashValue = hashValueSelector(state, hash);
|
const hashValue = hashValueSelector(state, hash);
|
||||||
return (
|
return (
|
||||||
<LearnLayout>
|
<LearnLayout>
|
||||||
<Helmet title='Learn to Code for Free – Coding Courses for Busy People' />
|
<Helmet title='Learn to Code — For Free — Coding Courses for Busy People' />
|
||||||
<Grid>
|
<Grid>
|
||||||
<Intro
|
<Intro
|
||||||
complete={complete}
|
complete={complete}
|
||||||
|
@ -25,14 +25,14 @@ describe('Landing page', () => {
|
|||||||
cy.visit('/');
|
cy.visit('/');
|
||||||
cy.title().should(
|
cy.title().should(
|
||||||
'eq',
|
'eq',
|
||||||
'Learn to Code for Free – Coding Courses for Busy People'
|
'Learn to Code — For Free — Coding Courses for Busy People'
|
||||||
);
|
);
|
||||||
cy.contains(selectors.callToAction, "Get started (it's free)");
|
cy.contains(selectors.callToAction, "Get started (it's free)");
|
||||||
cy.get(selectors.callToAction).should('have.length', 2);
|
cy.get(selectors.callToAction).should('have.length', 2);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Has visible header and sub-header', () => {
|
it('Has visible header and sub-header', () => {
|
||||||
cy.contains(selectors.heading, 'Learn to code at home.');
|
cy.contains(selectors.heading, 'Learn to code — for free.');
|
||||||
cy.contains('Build projects.').should('be.visible');
|
cy.contains('Build projects.').should('be.visible');
|
||||||
cy.contains('Earn certifications.').should('be.visible');
|
cy.contains('Earn certifications.').should('be.visible');
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@ describe('Learn Landing page (not logged in)', () => {
|
|||||||
|
|
||||||
cy.title().should(
|
cy.title().should(
|
||||||
'eq',
|
'eq',
|
||||||
'Learn to Code for Free – Coding Courses for Busy People'
|
'Learn to Code — For Free — Coding Courses for Busy People'
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user