* fix: handle the sorting of transformed files
We can't use the ext property, since that is transformed, but the
history is maintained.
* test: make solutions polyVinyls for sorting
* refactor: inline prepareChallenge
* refactor: make solutions polys in getChallenges
* fix: convert each solution to a poly
* fix: skip empty solutions
* fix: get challenge file history in client
* refactor: stop calling isPoly from the client
* fix: remove debug console.log
* refactor: remove unnecessary sorting step
* feat: first draft of CSS Color Markers project
* Update client/i18n/locales/english/intro.json
Co-authored-by: Nicholas Carrigan (he/him) <nhcarrigan@gmail.com>
* Update curriculum/challenges/english/01-responsive-web-design/learn-css-colors-by-building-a-color-markers-set/step-007.md
Co-authored-by: Nicholas Carrigan (he/him) <nhcarrigan@gmail.com>
* Update curriculum/challenges/english/01-responsive-web-design/learn-css-colors-by-building-a-color-markers-set/step-046.md
Co-authored-by: Nicholas Carrigan (he/him) <nhcarrigan@gmail.com>
* Update curriculum/challenges/english/01-responsive-web-design/learn-css-colors-by-building-a-color-markers-set/step-079.md
Co-authored-by: Nicholas Carrigan (he/him) <nhcarrigan@gmail.com>
* feat: begin adding tests
* feat: add more tests, fix wording and some CSS values
* feat: add more steps, fix wording
* Update curriculum/challenges/english/01-responsive-web-design/learn-css-colors-by-building-a-color-markers-set/step-014.md
Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>
* feat: add more tests, simplify some regex tests, fix wording
* fix: preformatted block names and help category map
* feat: finish first draft of color marker tests
* fix: simplify text involving classes
* Update curriculum/challenges/english/01-responsive-web-design/learn-css-colors-by-building-a-color-markers-set/step-004.md
Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>
* Update curriculum/challenges/english/01-responsive-web-design/learn-css-colors-by-building-a-color-markers-set/step-008.md
Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>
* Update curriculum/challenges/english/01-responsive-web-design/learn-css-colors-by-building-a-color-markers-set/step-009.md
Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>
* Update curriculum/challenges/english/01-responsive-web-design/learn-css-colors-by-building-a-color-markers-set/step-010.md
Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>
* Update curriculum/challenges/english/01-responsive-web-design/learn-css-colors-by-building-a-color-markers-set/step-011.md
Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>
* Update curriculum/challenges/english/01-responsive-web-design/learn-css-colors-by-building-a-color-markers-set/step-013.md
Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>
* Update curriculum/challenges/english/01-responsive-web-design/learn-css-colors-by-building-a-color-markers-set/step-014.md
Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>
* Update curriculum/challenges/english/01-responsive-web-design/learn-css-colors-by-building-a-color-markers-set/step-014.md
Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>
* Update curriculum/challenges/english/01-responsive-web-design/learn-css-colors-by-building-a-color-markers-set/step-054.md
Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>
* Update curriculum/challenges/english/01-responsive-web-design/learn-css-colors-by-building-a-color-markers-set/step-089.md
Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>
* Update curriculum/challenges/english/01-responsive-web-design/learn-css-colors-by-building-a-color-markers-set/step-094.md
Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>
* fix: add outro message to final CSS color markers step
* fix: make most regex tests case insensitive, add note about casing for filename
* correct double key from rebase
* remove jQuery for betterness
* move project to new superblock
* adjust meta to match others
* fix: add new to helper call
* regex-ise funny lessons
* unnecessary: add -22 superblock
* fix: make linter happy
* regex-ise missed challenges...oops
* Revert "fix: make linter happy"
This reverts commit 6e6e3cf503.
* Revert "unnecessary: add -22 superblock"
This reverts commit a58045607e.
* Update curriculum/challenges/english/14-responsive-web-design-22/learn-css-colors-by-building-a-color-markers-set/step-005.md
Co-authored-by: Tom <20648924+moT01@users.noreply.github.com>
* Update curriculum/challenges/english/14-responsive-web-design-22/learn-css-colors-by-building-a-color-markers-set/step-010.md
Co-authored-by: Tom <20648924+moT01@users.noreply.github.com>
* Update curriculum/challenges/english/14-responsive-web-design-22/learn-css-colors-by-building-a-color-markers-set/step-052.md
Co-authored-by: Tom <20648924+moT01@users.noreply.github.com>
* Update curriculum/challenges/english/14-responsive-web-design-22/learn-css-colors-by-building-a-color-markers-set/step-053.md
Co-authored-by: Tom <20648924+moT01@users.noreply.github.com>
* Update curriculum/challenges/english/14-responsive-web-design-22/learn-css-colors-by-building-a-color-markers-set/step-054.md
Co-authored-by: Tom <20648924+moT01@users.noreply.github.com>
* Update curriculum/challenges/english/14-responsive-web-design-22/learn-css-colors-by-building-a-color-markers-set/step-055.md
Co-authored-by: Tom <20648924+moT01@users.noreply.github.com>
* Update curriculum/challenges/english/14-responsive-web-design-22/learn-css-colors-by-building-a-color-markers-set/step-056.md
Co-authored-by: Tom <20648924+moT01@users.noreply.github.com>
* Update curriculum/challenges/english/14-responsive-web-design-22/learn-css-colors-by-building-a-color-markers-set/step-057.md
Co-authored-by: Tom <20648924+moT01@users.noreply.github.com>
* Update curriculum/challenges/english/14-responsive-web-design-22/learn-css-colors-by-building-a-color-markers-set/step-058.md
Co-authored-by: Tom <20648924+moT01@users.noreply.github.com>
* Update curriculum/challenges/english/14-responsive-web-design-22/learn-css-colors-by-building-a-color-markers-set/step-059.md
Co-authored-by: Tom <20648924+moT01@users.noreply.github.com>
* Update curriculum/challenges/english/14-responsive-web-design-22/learn-css-colors-by-building-a-color-markers-set/step-062.md
Co-authored-by: Tom <20648924+moT01@users.noreply.github.com>
* Update curriculum/challenges/english/14-responsive-web-design-22/learn-css-colors-by-building-a-color-markers-set/step-063.md
Co-authored-by: Tom <20648924+moT01@users.noreply.github.com>
* Update curriculum/challenges/english/14-responsive-web-design-22/learn-css-colors-by-building-a-color-markers-set/step-064.md
Co-authored-by: Tom <20648924+moT01@users.noreply.github.com>
* Update curriculum/challenges/english/14-responsive-web-design-22/learn-css-colors-by-building-a-color-markers-set/step-065.md
Co-authored-by: Tom <20648924+moT01@users.noreply.github.com>
* Update curriculum/challenges/english/14-responsive-web-design-22/learn-css-colors-by-building-a-color-markers-set/step-068.md
Co-authored-by: Tom <20648924+moT01@users.noreply.github.com>
* Update curriculum/challenges/english/14-responsive-web-design-22/learn-css-colors-by-building-a-color-markers-set/step-069.md
Co-authored-by: Tom <20648924+moT01@users.noreply.github.com>
* Update curriculum/challenges/english/14-responsive-web-design-22/learn-css-colors-by-building-a-color-markers-set/step-082.md
Co-authored-by: Tom <20648924+moT01@users.noreply.github.com>
* fix: rename project to "Learn CSS Colors by Building a Set of Colored Markers"
* Update curriculum/challenges/english/14-responsive-web-design-22/learn-css-colors-by-building-a-set-of-colored-markers/step-010.md
Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>
* adjust superblock to include `2022/`
Co-authored-by: Nicholas Carrigan (he/him) <nhcarrigan@gmail.com>
Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>
Co-authored-by: Tom <20648924+moT01@users.noreply.github.com>
* feat: add css-penguin practice project
* rename block name
* rename meta block
* rename necessary properties
* rename page
* add to step 25
* adjust prototype with better structure/naming
* add step adjusting .ground z-index
* fix: add position: absolute to .ground
* add to step 37
* add to step 103
* remove erm from solution
* add tests to 001-020
* add tests 021-030
* test: update 012 to use dynamic hints
* test: improve tests with dynamic hints
* fix: add position:relative to .penguin
* add tests 032-055
* add tests 056 - 103
* fix some tests
* code blocks and test fixes
Co-authored-by: Krzysztof G. <60067306+gikf@users.noreply.github.com>
* allow 0% 0px 0
* fix: add width and height step for silly firefox
* add instruction to add html element
* Tom's good suggestions, and his American suggestions
Co-authored-by: Tom <20648924+moT01@users.noreply.github.com>
* adjust wording for - you guessed it - firefox
Co-authored-by: Tom <20648924+moT01@users.noreply.github.com>
* add missing calc keyword
* just fix it with regex :(
* apply Nich's probably bogus suggestions
Co-authored-by: Nicholas Carrigan (he/him) <nhcarrigan@gmail.com>
* remove duplicate
Co-authored-by: Krzysztof G. <60067306+gikf@users.noreply.github.com>
Co-authored-by: Tom <20648924+moT01@users.noreply.github.com>
Co-authored-by: Nicholas Carrigan (he/him) <nhcarrigan@gmail.com>
* fix: replace index with script/styles as needed
* fix: remove redundant fileKey
It's overwritten by createPoly, so the parser does not need to create it
* fix: curriculum test suite
* Update client/src/templates/Challenges/classic/MultifileEditor.js
Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>
Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>
* chore: rename files
* chore: update codebase
* chore: proper title case
* chore: block name
Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>
Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>
* chore: rename files
* chore: update codebase
* chore: proper title case
* chore: missed block name
Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>
Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>
Co-authored-by: Tom <20648924+moT01@users.noreply.github.com>
* feat: Allow display username with uppercase characters
* fix: ensure user can change username to uppercased version
* fix: ensure that same username in a different case does not require validation
* feat: initial infra
* feat: break down steps
* feat: tests 1-30
* feat: tests 31 to end
* chore: apply gikf's review suggestions
Co-authored-by: Krzysztof <60067306+gikf@users.noreply.github.com>
* feat: actually testing things helps
* chore: apply review suggestions
Co-authored-by: Sem Bauke <46919888+Sembauke@users.noreply.github.com>
* chore: take the part, put it in a step
* chore: apply shaun's review suggestions
Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>
* chore: missed one
Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>
* chore: clarify verbiage
Co-authored-by: Krzysztof <60067306+gikf@users.noreply.github.com>
Co-authored-by: Sem Bauke <46919888+Sembauke@users.noreply.github.com>
Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>
* feat(curriculum): add registration-form practice project
* add parts 001-006
* add parts 007-009
* add parts 010-013
* add parts 014-024, fix 013
* add parts 025-043
* add parts 043-046
* add parts 0047-057 without tests
* fix tests and adjust index.md file I do not understand
* add css tests to parts 037-040
* add tests parts 040-057
* remove space around ERM
* add true assertion until document iframe is fixed
* add critical review suggestions
Co-authored-by: Tom <20648924+moT01@users.noreply.github.com>
Co-authored-by: gikf <60067306+gikf@users.noreply.github.com>
* use clear, Tom-like language for 038
Co-authored-by: Tom <20648924+moT01@users.noreply.github.com>
* change order to match author's age
* apply suggestions with personal pazzaz
* add that thing Nich forgets
* use innerText
Co-authored-by: Nicholas Carrigan (he/him) <nhcarrigan@gmail.com>
Co-authored-by: Tom <20648924+moT01@users.noreply.github.com>
Co-authored-by: gikf <60067306+gikf@users.noreply.github.com>
Co-authored-by: Nicholas Carrigan (he/him) <nhcarrigan@gmail.com>
* feat: dispatch resetChallenge action
* fix: copy challengeFiles instead of in-place sort
* fix: handle null updateFile payloads in redux
* refactor: reorganise region initialization
* refactor: pull code into editorDidMount
Then we can rely on the presence of the editor and monaco and don't have
litter the code with null checks.
* refactor: use better name for editable region init
* refactor: remove unused decoration
* refactor: rename forbidden region init functions
* fix: keep all challengeFiles when resetting
* refactor: remove unused decoration class
* fix: reinitialize editor on reset
* fix: stop adding multiple scroll listeners
Since the challengeFile update on each keystroke extra (unnecessary)
adding of listeners slowed the editor to a crawl.
* fix: only scroll to editor on mount
Rather than on any edit.
* refactor: remove logs and comments
* fix: rename toSortedArray and fix broken test
* fix: check for null not falsy in updateFile
* fix: only update project features when project
* fix: only reset if editor contents have changed
* feat: focus on editor after reset
* fix: enforce multifile tab order
* fix: sort challengeFiles to prevent remounts
If the challengeFiles are used unsorted, this can unmount an editor.
The editors rely on the mount hook for initialization, so extra mounts
can cause unwanted behaviour.
* fix: make editor tabs and panes match
* feat(curriculum): add initial steps
Add the initial step files for this project.
* feat(curriculum): write test texts
Add some test text (tests coming soon).
* feat: tests for HTML bits
Add tests for the HTML bits - CSS holding off until parser lands.
* feat: CSS tests
New CSS parser works great!
* fix: link href
Fix the href in the boilerplate.
* chore: apply suggestions from code review
Co-authored-by: gikf <60067306+gikf@users.noreply.github.com>
* fix: clarify link element
* fix: optional chaining
* fix: remove unused meta props
* fix: update helper and fix tests
* chore: apply tom's review suggestions
Co-authored-by: Tom <20648924+moT01@users.noreply.github.com>
* chore: no console logs
Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>
* feat: intro
Add introductory text, tweak instructions a bit.
Co-authored-by: gikf <60067306+gikf@users.noreply.github.com>
Co-authored-by: Tom <20648924+moT01@users.noreply.github.com>
Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>
* chore: rename APIs and Microservices to include "Backend" (#42515)
* fix typo
* fix typo
* undo change
* Corrected grammar mistake
Corrected a grammar mistake by removing a comma.
* change APIs and Microservices cert title
* update title
* Change APIs and Microservices certi title
* Update translations.json
* update title
* feat(curriculum): rename apis and microservices cert
* rename folder structure
* rename certificate
* rename learn Markdown
* apis-and-microservices -> back-end-development-and-apis
* update backend meta
* update i18n langs and cypress test
Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>
* fix: add development to front-end libraries (#42512)
* fix: added-the-word-Development-to-front-end-libraries
* fix/added-the-word-Development-to-front-end-libraries
* fix/added-word-development-to-front-end-libraries-in-other-related-files
* fix/added-the-word-Development-to-front-end-and-all-related-files
* fix/removed-typos-from-last-commit-in-index.md
* fix/reverted-changes-that-i-made-to-dependecies
* fix/removed xvfg
* fix/reverted changes that i made to package.json
* remove unwanted changes
* front-end-development-libraries changes
* rename backend certSlug and README
* update i18n folder names and keys
* test: add legacy path redirect tests
This uses serve.json from the client-config repo, since we currently use
that in production
* fix: create public dir before moving serve.json
* fix: add missing script
* refactor: collect redirect tests
* test: convert to cy.location for stricter tests
* rename certificate folder to 00-certificates
* change crowdin config to recognise new certificates location
* allow translations to be used
Co-authored-by: Nicholas Carrigan (he/him) <nhcarrigan@gmail.com>
* add forwards slashes to path redirects
* fix cypress path tests again
* plese cypress
* fix: test different challenge
Okay so I literally have no idea why this one particular challenge
fails in Cypress Firefox ONLY. Tom and I paired and spun a full build
instance and confirmed in Firefox the page loads and redirects as
expected. Changing to another bootstrap challenge passes Cypress firefox
locally. Absolutely boggled by this.
AAAAAAAAAAAAAAA
* fix: separate the test
Okay apparently the test does not work unless we separate it into
a different `it` statement.
>:( >:( >:( >:(
Co-authored-by: Sujal Gupta <55016909+heysujal@users.noreply.github.com>
Co-authored-by: Noor Fakhry <65724923+NoorFakhry@users.noreply.github.com>
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
Co-authored-by: Nicholas Carrigan (he/him) <nhcarrigan@gmail.com>
* fix(client): fix client
* fix propType and add comment
* revert user.json prettification
* slight type refactor and payload correction
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
* update ChallengeFile type imports
* add cypress test for code-storage
* update test and storage epic
* fix Shaun's tired brain's logic
* refactor with suggestions
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
* update codeReset
* increate cypress timeout because firefox is slow
* remove unused import to make linter happy
* use focus on editor
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
* use more specific seletor for cypress editor test
* account for silly null challengeFiles
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
* fix: remove circular dependency
redux depended on templates/Challenges/redux and vice versa. This
meant that import order mattered and confusing bugs could arise.
(cherry picked from commit 7d67a4e70922bbb3051f2f9982dcc69e240d43dc)
* feat: require imports to be in alphabetical order
Import order generally does not matter, but there are edge cases
(circular imports and css imports, for example) where changing order
changes behaviour
(cherry picked from commit b8d1393a91ec6e068caf8e8498a5c95df68c2b2c)
* chore: order imports
* fix: lift up challenge description + title comps
This brings the classic Show closer to the others as they
now all create the description and title components
* fix: remove donation-saga/index circular import
(cherry picked from commit 51a44ca668a700786d2744feffeae4fdba5fd207)
* refactor: extract action-types from settings
(cherry picked from commit 25e26124d691c84a0d0827d41dafb761c686fadd)
* fix: lint errors
* feat: prevent useless renames
* revert: disable portuguese
First certification is not 100% yet. Shipped too soon. :(
* feat: enable portuguese curriculum
Curriculum can build in portuguese, leaving client disabled to
prevent language from appearing in nav bar.
* feat: move audited cert list
Moves the audited cert list to the config, instead of the utils.
* refactor: extract help category map as JSON
* refactor: extract block names as json
* feat: add create-project script
* fix: correct case for tsconfig target
Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>
Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>
* fix: valid username lowercase
* test: add test in the validate for reject uppercase characters
* test: add test in the cypress for check on uppercase characters and reject it.
Enables the selection of `espanol` for the curriculum build, and sets
`responsive-web-design` as audited for both languages.
Signed-off-by: nhcarrigan <nhcarrigan@gmail.com>