Files
Nicholas Carrigan (he/him) 536a689d34 feat(curriculum): balance sheet project (#44189)
* feat: initial infra

* feat: create steps

* chore: apply sem's review suggestions

Co-authored-by: Sem Bauke <46919888+Sembauke@users.noreply.github.com>

* feat: write tests

* chore: optional?.chaining?.

* chore: gikf's suggestion

Co-authored-by: Krzysztof <60067306+gikf@users.noreply.github.com>

* chore: rename

* chore: *

Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>

* chore: apply shaun's review suggestions

Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>

* chore: manual review suggestions

* chore: ?????

Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>

Co-authored-by: Sem Bauke <46919888+Sembauke@users.noreply.github.com>
Co-authored-by: Krzysztof <60067306+gikf@users.noreply.github.com>
Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>
2021-12-03 16:20:34 -06:00

3.7 KiB

id, title, challengeType, dashedName
id title challengeType dashedName
6193d8081ec2531581ea7b98 Step 1 0 step-1

--description--

A balance sheet is used to track the state of an organization's finances. You'll be building a mock balance sheet for AcmeWidgetCorp to explore the use of various CSS selectors.

Begin with your basic HTML boilerplate. Include the DOCTYPE declaration, an html element, the appropriate meta tags, a head, body, and title element, and link your stylesheet. Give the title element the text AcmeWidgetCorp Balance Sheet.

--hints--

Your code should have a <!DOCTYPE html> declaration.

assert(code.match(/<!DOCTYPE html>/i));

Your code should have an html element.

assert(document.querySelectorAll('html')?.length === 1);

Your code should have a head element within the html element.

assert(document.querySelectorAll('head')?.length === 1);

Your code should have a body element within the html element.

assert(document.querySelectorAll('body')?.length === 1);

Your head element should come before your body element.

assert(document.querySelector('body')?.previousElementSibling?.tagName === 'HEAD');

You should have two meta elements.

const meta = document.querySelectorAll('meta');
assert(meta?.length === 2);

One meta element should have a name set to viewport, and content set to width=device-width, initial-scale=1.0.

const meta = [...document.querySelectorAll('meta')];
const target = meta?.find(m => m?.getAttribute('name') === 'viewport' && m?.getAttribute('content') === 'width=device-width, initial-scale=1.0' && !m?.getAttribute('charset'));
assert.exists(target);

The other meta element should have the charset attribute set to UTF-8.

const meta = [...document.querySelectorAll('meta')];
const target = meta?.find(m => !m?.getAttribute('name') && !m?.getAttribute('content') && m?.getAttribute('charset')?.toLowerCase() === 'utf-8');
assert.exists(target);

Your code should have a title element.

const title = document.querySelector('title');
assert.exists(title);

Your project should have a title of AcmeWidgetCorp Balance Sheet.

const title = document.querySelector('title');
assert.equal(title?.text?.trim()?.toLowerCase(), 'acmewidgetcorp balance sheet')

Remember, the casing and spelling matter for the title.

const title = document.querySelector('title');
assert.equal(title?.text?.trim(), 'AcmeWidgetCorp Balance Sheet');

Your code should have a link element.

assert(/<link/.test(code))

Your href attribute should have the value ./styles.css.

assert(/href\s*=\s*('|")(\.\/)?styles\.css\1/.test(code));

Your rel attribute should have the value stylesheet.

assert(/rel\s*=\s*('|")\s*stylesheet\s*\1/.test(code));

Your type attribute should have the value text/css.

assert(/type\s*=\s*('|")\s*text\/css\s*\1/.test(code));

Your link element should have href="./styles.css", rel="stylesheet", and type="text/css" attributes

assert(/<link\s+(href\s*=\s*("|')(\.\/)?styles\.css\2\s*(rel\s*=\s*('|")\s*stylesheet\s*\5\s*type\s*=\s*("|')text\/css\6|type\s*=\s*("|')text\/css\7\s*rel\s*=\s*('|")\s*stylesheet\s*\8)|rel\s*=\s*('|")\s*stylesheet\s*\9\s*(href\s*=\s*("|')(\.\/)?styles\.css\11\s*type\s*=\s*("|')text\/css\13|type\s*=\s*("|')text\/css\14\s*href\s*=\s*("|')(\.\/)?styles\.css\15)|type\s*=\s*("|')text\/css\17\s*(href\s*=\s*("|')(\.\/)?styles\.css\19\s*rel\s*=\s*('|")\s*stylesheet\s*\21|rel\s*=\s*('|")\s*stylesheet\s*\22\s*href\s*=\s*("|')(\.\/)?styles\.css\23))\s*\/?>/.test(code));

--seed--

--seed-contents--

--fcc-editable-region--

--fcc-editable-region--