diff --git a/.github/workflows/node.js-tests-upcoming.yml b/.github/workflows/node.js-tests-upcoming.yml index ca3254ae99..2304f2a0aa 100644 --- a/.github/workflows/node.js-tests-upcoming.yml +++ b/.github/workflows/node.js-tests-upcoming.yml @@ -33,6 +33,7 @@ jobs: run: | cp sample.env .env echo 'SHOW_UPCOMING_CHANGES=true' >> .env + echo 'SHOW_NEW_CURRICULUM=true' >> .env cat .env - name: Lint Source Files @@ -66,6 +67,7 @@ jobs: run: | cp sample.env .env echo 'SHOW_UPCOMING_CHANGES=true' >> .env + echo 'SHOW_NEW_CURRICULUM=true' >> .env cat .env - name: Install Dependencies diff --git a/.github/workflows/node.js-tests.yml b/.github/workflows/node.js-tests.yml index 9d6f8a81b4..85d2cb8f35 100644 --- a/.github/workflows/node.js-tests.yml +++ b/.github/workflows/node.js-tests.yml @@ -25,7 +25,10 @@ jobs: cache: 'npm' - name: Set Environment variables - run: cp sample.env .env + run: | + cp sample.env .env + echo 'SHOW_NEW_CURRICULUM=true' >> .env + cat .env - name: Lint Source Files run: | @@ -55,7 +58,10 @@ jobs: cache: npm - name: Set Environment variables - run: cp sample.env .env + run: | + cp sample.env .env + echo 'SHOW_NEW_CURRICULUM=true' >> .env + cat .env - name: Install Dependencies run: | @@ -90,6 +96,8 @@ jobs: run: | cp sample.env .env echo 'SHOW_UPCOMING_CHANGES=true' >> .env + echo 'SHOW_NEW_CURRICULUM=true' >> .env + cat .env - name: Install Dependencies run: | @@ -122,7 +130,11 @@ jobs: cache: npm - name: Set Environment variables - run: cp sample.env .env + run: | + cp sample.env .env + echo 'SHOW_UPCOMING_CHANGES=true' >> .env + echo 'SHOW_NEW_CURRICULUM=true' >> .env + cat .env - name: Install Dependencies env: diff --git a/curriculum/challenges/english/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/step-015.md b/curriculum/challenges/english/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/step-015.md index a63fd9221a..bd1fa88737 100644 --- a/curriculum/challenges/english/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/step-015.md +++ b/curriculum/challenges/english/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/step-015.md @@ -18,22 +18,25 @@ Start by rewriting the styles you have created into the `styles.css` file. Make Your `styles.css` file should have the `h1, h2, p` type selector. ```js -const css = code.split('')[0]; -assert(__helpers.removeWhiteSpace(css).match(/(h1|h2|p),(h1|h2|p),(h1|h2|p){/)) +(getUserInput) => { + assert(getUserInput('editableContents').replace(/[\s\n]*/g, "").match(/(h1|h2|p),(h1|h2|p),(h1|h2|p){/)); +} ``` - + Your selector should set the `text-align` property to `center`. ```js -const css = code.split('')[0]; -assert(css.match(/text-align:\s*center;?/)); +(getUserInput) => { + assert(getUserInput('editableContents').match(/text-align:\s*center;?/)); +} ``` You should only have one selector. ```js -const css = code.split('')[0]; -assert(css.match(/text-align:\s*center;?/).length === 1); +(getUserInput) => { + assert(getUserInput('editableContents').match(/text-align:\s*center;?/)?.length === 1); +} ``` # --seed-- diff --git a/curriculum/challenges/english/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/step-016.md b/curriculum/challenges/english/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/step-016.md index b602a766b9..f3352a6817 100644 --- a/curriculum/challenges/english/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/step-016.md +++ b/curriculum/challenges/english/14-responsive-web-design-22/learn-basic-css-by-building-a-cafe-menu/step-016.md @@ -20,9 +20,11 @@ assert(!code.match(/style/i)); You should not have any CSS selectors in your HTML file. ```js -const html = code.split('')[1]; -assert(!html.includes('style')); -assert(!html.includes('text-align')); +(getUserInput) => { + const html = getUserInput('editableContents'); + assert(!html.includes('style')); + assert(!html.includes('text-align')); +} ``` # --seed-- diff --git a/curriculum/challenges/english/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/step-080.md b/curriculum/challenges/english/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/step-080.md index 0a175c70fd..a827b705a6 100644 --- a/curriculum/challenges/english/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/step-080.md +++ b/curriculum/challenges/english/14-responsive-web-design-22/learn-css-grid-by-building-a-magazine/step-080.md @@ -772,7 +772,7 @@ hr { } } -@media only screen (max-width: 420px) { +@media only screen and (max-width: 420px) { .hero-title { font-size: 4.5rem; } diff --git a/curriculum/challenges/english/14-responsive-web-design-22/learn-css-transforms-by-building-a-penguin/step-002.md b/curriculum/challenges/english/14-responsive-web-design-22/learn-css-transforms-by-building-a-penguin/step-002.md index e78f2a846d..8525cdbc13 100644 --- a/curriculum/challenges/english/14-responsive-web-design-22/learn-css-transforms-by-building-a-penguin/step-002.md +++ b/curriculum/challenges/english/14-responsive-web-design-22/learn-css-transforms-by-building-a-penguin/step-002.md @@ -39,7 +39,7 @@ assert.include(['linear-gradient(45deg,rgb(118,201,255),rgb(247,255,222))', 'rgb
- +Total - $-171 + -$171 $136 $334
diff --git a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-027.md b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-027.md index 087ec6f2e5..bb729f4c93 100644 --- a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-027.md +++ b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-027.md @@ -111,7 +111,7 @@ assert(new __helpers.CSSHelp(document).getStyle('body')?.color === 'rgb(10, 10,Total - $-171 + -$171 $136 $334
diff --git a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-028.md b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-028.md index 6504424902..c44f892709 100644 --- a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-028.md +++ b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-028.md @@ -117,7 +117,7 @@ assert(new __helpers.CSSHelp(document).getStyle('#sheet')?.maxWidth === '500px')Total - $-171 + -$171 $136 $334
diff --git a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-029.md b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-029.md index 5b7401989c..81e1842a8b 100644 --- a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-029.md +++ b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-029.md @@ -105,7 +105,7 @@ assert(new __helpers.CSSHelp(document).getStyle('#sheet')?.margin === 'auto');Total - $-171 + -$171 $136 $334
diff --git a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-030.md b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-030.md index 0ac61b3a76..4cb51f905f 100644 --- a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-030.md +++ b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-030.md @@ -111,7 +111,7 @@ assert(new __helpers.CSSHelp(document).getStyle('#sheet')?.border === '2px solidTotal - $-171 + -$171 $136 $334
diff --git a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-031.md b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-031.md index 26ffae7fe7..f7be5f3565 100644 --- a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-031.md +++ b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-031.md @@ -111,7 +111,7 @@ assert(new __helpers.CSSHelp(document).getStyle('#header h2')?.fontSize === '1.3Total - $-171 + -$171 $136 $334
diff --git a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-032.md b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-032.md index 301430b229..7cc48ea81e 100644 --- a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-032.md +++ b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-032.md @@ -117,7 +117,7 @@ assert(new __helpers.CSSHelp(document).getStyle('.row')?.justifyContent === 'fleTotal - $-171 + -$171 $136 $334
diff --git a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-033.md b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-033.md index e6c3998830..1947c078bf 100644 --- a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-033.md +++ b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-033.md @@ -119,7 +119,7 @@ assert(new __helpers.CSSHelp(document).getStyle('.name')?.textAlign === 'left');Total - $-171 + -$171 $136 $334
diff --git a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-034.md b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-034.md index bc0aefd6d5..7d520d73fe 100644 --- a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-034.md +++ b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-034.md @@ -119,7 +119,7 @@ assert(new __helpers.CSSHelp(document).getStyle('span:not(.name)')?.minWidth ===Total - $-171 + -$171 $136 $334
diff --git a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-035.md b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-035.md index 39fce2e761..c640a084b3 100644 --- a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-035.md +++ b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-035.md @@ -105,7 +105,7 @@ assert(new __helpers.CSSHelp(document).getStyle('span:not(.name)')?.textAlign ==Total - $-171 + -$171 $136 $334
diff --git a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-036.md b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-036.md index e89d060513..4935e76d80 100644 --- a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-036.md +++ b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-036.md @@ -111,7 +111,7 @@ assert(new __helpers.CSSHelp(document).getStyle('span[class="current"]')?.fontStTotal - $-171 + -$171 $136 $334
diff --git a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-037.md b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-037.md index 710c99bcd1..3ece6358d3 100644 --- a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-037.md +++ b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-037.md @@ -107,7 +107,7 @@ assert(new __helpers.CSSHelp(document).getStyle('.row')?.borderBottom === '1px sTotal - $-171 + -$171 $136 $334
diff --git a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-038.md b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-038.md index a70f189267..25407c3b70 100644 --- a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-038.md +++ b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-038.md @@ -105,7 +105,7 @@ assert(new __helpers.CSSHelp(document).getStyle('.row')?.padding === '4px');Total - $-171 + -$171 $136 $334
diff --git a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-039.md b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-039.md index 7c812448e9..48378c9800 100644 --- a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-039.md +++ b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-039.md @@ -113,7 +113,7 @@ assert(new __helpers.CSSHelp(document).getStyle('.row:nth-child(2n+1)')?.backgroTotal - $-171 + -$171 $136 $334
diff --git a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-040.md b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-040.md index c19b5c9942..5c3848f4ed 100644 --- a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-040.md +++ b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-040.md @@ -119,7 +119,7 @@ assert(new __helpers.CSSHelp(document).getStyle('.row:nth-of-type(2n+1)')?.backgTotal - $-171 + -$171 $136 $334
diff --git a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-041.md b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-041.md index 2758fba303..92d8b000fb 100644 --- a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-041.md +++ b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-041.md @@ -111,7 +111,7 @@ assert(new __helpers.CSSHelp(document).getStyle('.row:nth-of-type(2n)')?.backgroTotal - $-171 + -$171 $136 $334
diff --git a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-042.md b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-042.md index 8cc7872422..fcfc51a1d9 100644 --- a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-042.md +++ b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-042.md @@ -119,7 +119,7 @@ assert(new __helpers.CSSHelp(document).getStyle('.row:last-child')?.marginBottomTotal - $-171 + -$171 $136 $334
diff --git a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-043.md b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-043.md index 164df72263..523baebefc 100644 --- a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-043.md +++ b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-043.md @@ -113,7 +113,7 @@ assert(new __helpers.CSSHelp(document).getStyle('p[class~="total"]')?.borderBottTotal - $-171 + -$171 $136 $334
diff --git a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-044.md b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-044.md index 4bc3b90f98..46b34420d0 100644 --- a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-044.md +++ b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-044.md @@ -116,7 +116,7 @@ assert(elements?.every(element => element.classList.contains('row') && element.cTotal - $-171 + -$171 $136 $334
diff --git a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-045.md b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-045.md index 818f4b4cc8..80aca6adb8 100644 --- a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-045.md +++ b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-045.md @@ -111,7 +111,7 @@ assert(new __helpers.CSSHelp(document).getStyle('.row[tabindex]:hover')?.backgroTotal - $-171 + -$171 $136 $334
diff --git a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-046.md b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-046.md index 030106a454..566627fa86 100644 --- a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-046.md +++ b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-046.md @@ -119,7 +119,7 @@ assert(new __helpers.CSSHelp(document).getStyle('.row[tabindex]:focus')?.color =Total - $-171 + -$171 $136 $334
diff --git a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-047.md b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-047.md index 39c38baedf..ee00cc61f1 100644 --- a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-047.md +++ b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-047.md @@ -113,7 +113,7 @@ assert(new __helpers.CSSHelp(document).getStyle('div > h2')?.backgroundColor ===Total - $-171 + -$171 $136 $334
@@ -187,6 +187,11 @@ span[class="current"] { background-color: #99c9ff; } +.row[tabindex]:focus { + background-color: #198eee; + color: white; +} + --fcc-editable-region-- --fcc-editable-region-- diff --git a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-048.md b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-048.md index c2c33a5cdb..4661f0b209 100644 --- a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-048.md +++ b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-048.md @@ -105,7 +105,7 @@ assert(new __helpers.CSSHelp(document).getStyle('#header h2')?.backgroundColor =Total - $-171 + -$171 $136 $334
@@ -181,6 +181,11 @@ span[class="current"] { background-color: #99c9ff; } +.row[tabindex]:focus { + background-color: #198eee; + color: white; +} + div > h2 { background-color: #99c9ff; } diff --git a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-049.md b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-049.md index a143e3b50c..81f37a366d 100644 --- a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-049.md +++ b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-049.md @@ -111,7 +111,7 @@ assert(new __helpers.CSSHelp(document).getStyle('div > h2')?.padding === '0px 4pTotal - $-171 + -$171 $136 $334
@@ -186,6 +186,11 @@ span[class="current"] { background-color: #99c9ff; } +.row[tabindex]:focus { + background-color: #198eee; + color: white; +} + --fcc-editable-region-- div > h2 { background-color: #99c9ff; diff --git a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-050.md b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-050.md index 87bc1df6f7..495ce0b0d3 100644 --- a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-050.md +++ b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-050.md @@ -113,7 +113,7 @@ assert(new __helpers.CSSHelp(document).getStyle('div ~ h2')?.fontWeight === 'norTotal - $-171 + -$171 $136 $334
@@ -188,6 +188,11 @@ span[class="current"] { background-color: #99c9ff; } +.row[tabindex]:focus { + background-color: #198eee; + color: white; +} + div > h2 { background-color: #99c9ff; font-size: 1.3em; diff --git a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-051.md b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-051.md index b2cf43d73c..ffb2842ee6 100644 --- a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-051.md +++ b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-051.md @@ -111,7 +111,7 @@ assert(new __helpers.CSSHelp(document).getStyle('p + span')?.fontSize === '0.8emTotal - $-171 + -$171 $136 $334
@@ -186,6 +186,11 @@ span[class="current"] { background-color: #99c9ff; } +.row[tabindex]:focus { + background-color: #198eee; + color: white; +} + div > h2 { background-color: #99c9ff; font-size: 1.3em; diff --git a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-052.md b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-052.md index d58b3ca47f..64a5b8b85e 100644 --- a/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-052.md +++ b/curriculum/challenges/english/14-responsive-web-design-22/learn-more-about-css-pseudo-selectors-by-building-a-balance-sheet/step-052.md @@ -113,7 +113,7 @@ assert(new __helpers.CSSHelp(document).getStyle('p + span')?.color === 'rgb(59,Total - $-171 + -$171 $136 $334
@@ -291,7 +291,7 @@ p + span {Total - $-171 + -$171 $136 $334
@@ -366,6 +366,11 @@ span[class="current"] { background-color: #99c9ff; } +.row[tabindex]:focus { + background-color: #198eee; + color: white; +} + div > h2 { background-color: #99c9ff; font-size: 1.3em; diff --git a/curriculum/schema/challengeSchema.js b/curriculum/schema/challengeSchema.js index eaceb7f0f5..43096efbf2 100644 --- a/curriculum/schema/challengeSchema.js +++ b/curriculum/schema/challengeSchema.js @@ -4,6 +4,7 @@ Joi.objectId = require('joi-objectid')(Joi); const { challengeTypes } = require('../../client/utils/challenge-types'); const slugRE = new RegExp('^[a-z0-9-]+$'); +const slugWithSlashRE = new RegExp('^[a-z0-9-/]+$'); const fileJoi = Joi.object().keys({ fileKey: Joi.string(), @@ -90,8 +91,8 @@ const schema = Joi.object() crossDomain: Joi.bool() }) ), - solutions: Joi.array().items(Joi.array().items(fileJoi)), - superBlock: Joi.string().regex(slugRE), + solutions: Joi.array().items(Joi.array().items(fileJoi).min(1)), + superBlock: Joi.string().regex(slugWithSlashRE), superOrder: Joi.number(), suborder: Joi.number(), tests: Joi.array().items( diff --git a/curriculum/test/test-challenges.js b/curriculum/test/test-challenges.js index 447c0a7070..f4cabd1eef 100644 --- a/curriculum/test/test-challenges.js +++ b/curriculum/test/test-challenges.js @@ -161,8 +161,10 @@ async function setup() { // as they appear in the list of challenges const blocks = challenges.map(({ block }) => block); const superBlocks = challenges.map(({ superBlock }) => superBlock); - const targetBlockStrings = [...new Set(blocks)]; - const targetSuperBlockStrings = [...new Set(superBlocks)]; + const targetBlockStrings = [...new Set(blocks.filter(el => Boolean(el)))]; + const targetSuperBlockStrings = [ + ...new Set(superBlocks.filter(el => Boolean(el))) + ]; // the next few statements will filter challenges based on command variables if (process.env.npm_config_superblock) { @@ -497,24 +499,26 @@ ${inspect(commentMap)} // This is expected to happen in the project based curriculum. const nextChallenge = challenges[id + 1]; - // TODO: can this be dried out, ideally by removing the redux - // handler? + if (nextChallenge) { const solutionFiles = cloneDeep(nextChallenge.challengeFiles); - solutionFiles.forEach(challengeFile => { - challengeFile.editableContents = getLines( - challengeFile.contents, - challenge.challengeFiles.find( - x => - x.ext === challengeFile.ext && - x.name === challengeFile.name - ).editableRegionBoundaries - ); - }); - solutions = [solutionFiles]; + const solutionFilesWithEditableContents = solutionFiles.map( + file => ({ + ...file, + editableContents: getLines( + file.contents, + file.editableRegionBoundaries + ) + }) + ); + // Since there is only one seed, there can only be one solution, + // but the tests assume solutions is an array. + solutions = [solutionFilesWithEditableContents]; solutionFromNext = true; } else { - throw Error('solution omitted'); + throw Error( + `solution omitted for ${challenge.superBlock} ${challenge.block} ${challenge.title}` + ); } } @@ -567,15 +571,11 @@ async function createTestRunner( solutionFromNext ) { const { required = [], template, removeComments } = challenge; - // we should avoid modifying challenge, as it gets reused: - const challengeFiles = cloneDeep(challenge.challengeFiles); - solutionFiles.forEach(solutionFile => { - const challengeFile = challengeFiles.find( - x => x.ext === solutionFile.ext && x.name === solutionFile.name - ); - challengeFile.contents = solutionFile.contents; - challengeFile.editableContents = solutionFile.editableContents; - }); + + const challengeFiles = replaceChallengeFilesContentsWithSolutions( + challenge.challengeFiles, + solutionFiles + ); const { build, sources, loadEnzyme } = await buildChallenge({ challengeFiles, @@ -615,6 +615,25 @@ async function createTestRunner( }; } +function replaceChallengeFilesContentsWithSolutions( + challengeFiles, + solutionFiles +) { + return challengeFiles.map(file => { + const matchingSolutionFile = solutionFiles.find( + ({ ext, name }) => ext === file.ext && file.name === name + ); + if (!matchingSolutionFile) { + throw Error(`No matching solution file found`); + } + return { + ...file, + contents: matchingSolutionFile.contents, + editableContents: matchingSolutionFile.editableContents + }; + }); +} + async function getContextEvaluator(build, sources, code, loadEnzyme) { await initializeTestRunner(build, sources, code, loadEnzyme); diff --git a/curriculum/test/utils/mongoIds.js b/curriculum/test/utils/mongoIds.js index 50ab7b5f3b..107266a56d 100644 --- a/curriculum/test/utils/mongoIds.js +++ b/curriculum/test/utils/mongoIds.js @@ -3,6 +3,13 @@ const findIndex = require('lodash/findIndex'); Joi.objectId = require('joi-objectid')(Joi); const schema = Joi.objectId(); +const duplicatedProjectIds = [ + 'bd7158d8c442eddfaeb5bd18', + '587d78af367417b2b2512b03', + '587d78af367417b2b2512b04', + '587d78b0367417b2b2512b05', + 'bd7158d8c242eddfaeb5bd13' +]; class MongoIds { constructor() { @@ -12,14 +19,13 @@ class MongoIds { try { schema.validate(id); } catch { - throw new Error(`Expected a valid ObjectId for ${title}, but got ${id}`); + throw Error(`Expected a valid ObjectId for ${title}, but got ${id}`); } const idIndex = findIndex(this.knownIds, existing => id === existing); - // TODO: check for the exceptions or remove the warning. - if (idIndex !== -1) { - console.warn(`The id for challenge ${title} appears more than once. - With the exception of some projects this should not happen. + if (idIndex !== -1 && !duplicatedProjectIds.includes(id)) { + throw Error(`The id for challenge ${title} appears more than once. + With the exception of duplicatedProjectIds this should not happen. `); } this.knownIds = [...this.knownIds, id]; diff --git a/tools/challenge-parser/parser/__snapshots__/index.acceptance.test.js.snap b/tools/challenge-parser/parser/__snapshots__/index.acceptance.test.js.snap index 40a3996a3d..505e3aa4ac 100644 --- a/tools/challenge-parser/parser/__snapshots__/index.acceptance.test.js.snap +++ b/tools/challenge-parser/parser/__snapshots__/index.acceptance.test.js.snap @@ -12,9 +12,7 @@ Object { a container directive ::: ", - "solutions": Array [ - Array [], - ], + "solutions": Array [], "tests": Array [], } `; @@ -43,9 +41,7 @@ Object { var x = 'y';
",
},
- "solutions": Array [
- Array [],
- ],
+ "solutions": Array [],
"tests": Array [],
}
`;
@@ -100,9 +96,7 @@ for (let index = 0; index < array.length; index++) {
code example 0
",
- "solutions": Array [
- Array [],
- ],
+ "solutions": Array [],
"tests": Array [
Object {
"testString": "// test code",
@@ -166,9 +160,7 @@ Object {
code example 0
",
- "solutions": Array [
- Array [],
- ],
+ "solutions": Array [],
"tests": Array [
Object {
"testString": "// test code",
@@ -516,9 +508,7 @@ Object {
"forumTopicId": 18276,
"id": "bd7123c8c441eddfaeb5bdef",
"isHidden": false,
- "solutions": Array [
- Array [],
- ],
+ "solutions": Array [],
"tests": Array [
Object {
"testString": "// test code",
diff --git a/tools/challenge-parser/parser/plugins/add-solution.js b/tools/challenge-parser/parser/plugins/add-solution.js
index af08df35e0..30407aa47c 100644
--- a/tools/challenge-parser/parser/plugins/add-solution.js
+++ b/tools/challenge-parser/parser/plugins/add-solution.js
@@ -1,3 +1,4 @@
+const { isEmpty } = require('lodash');
const { root } = require('mdast-builder');
const visitChildren = require('unist-util-visit-children');
@@ -30,7 +31,7 @@ function createPlugin() {
);
visitForContents(solutionTree);
- solutions.push(Object.values(solution));
+ if (!isEmpty(solution)) solutions.push(Object.values(solution));
});
file.data = {