* feat: make all sources available in tests
The original contents of all files (index.html, script.js etc.) will be
accessible in tests. For example __sources['index.html'] gets the
original html file and nothing else.
* feat: use __file to get user code
* 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
* fix: use an iframe to preserve head and body
* fix: remove unnecessary parsing of html
The contents gets inserted into the DOM during transformHtml, which
is always part of the build pipeline
* fix: pipe contents through iframe
* refactor: use the same code for both transforms
* fix: try to handle test errors better
Co-authored-by: moT01 <20648924+moT01@users.noreply.github.com>
* fix: ensures jquery exists for those challenges
For tests frame-runner.js imports jquery, but jquery challenges always
need it
* Revert "Revert "fix: only include frame-runner when running tests (#44337)" (#44419)"
This reverts commit c19bf504b8.
* fix: handle missing solutions correctly
Rather than creating an [[]] the parser now creates [] which isEmpty().
This makes the test suite check the next challenge for a solution.
In addition, the logic for testing solutions was fixed.
* chore: update snapshots
* test: build new superblock in node.js-tests CI
* test: allow forward slash in superblock slug
* fix: borked tests oops
* test: ignore duplicated projects
* fix: i did not break these shaun did :)
* fix: idIndex is index of id not id
Co-authored-by: Nicholas Carrigan <nhcarrigan@gmail.com>
* refactor: use enum
* feat: create links between legacy and new
* refactor: pull out legacy-links component
* fix: import order
* fix: provide icon for new superblock
* feat: only show the copy on the new superblock
* fix: use the proper i18n keys correctly
* feat: put the new superblock at the end of the map
* feat: update the new superblock title
* test: update for soft launch order
* fix: show original project links on /settings
Soft launch only.
* test: use SHOW_NEW_CURRICULUM in tests
* fix: rename the remaining rwd-22s
* feat: make the messge prettier
* fix: message copy
* refactor: make comment make sense
Co-authored-by: Ahmad Abdolsaheb <ahmad.abdolsaheb@gmail.com>
Co-authored-by: Nicholas Carrigan (he/him) <nhcarrigan@gmail.com>
* feat: use legacy flag
chore: reorder challenges
fix: linter
revert: server change
feat: unblock new editor
fix: proper order
fix: 0-based order
fix: broke the order
feat: move tribute certification to its own block
feat: split the old projects block into 4
fix: put all blocks in order
chore: add intro text
refactor: use block, not blockName in query
fix: project progress indicator
* fix: reorder new challenges/certs
* fix: reorder legacy challenges
* fix: reintroduce legacy certs
* feat: add showNewCurriculum flag to env
* chore: forgot sample.env
* feat: use feature flag for display
* fix: rename meta + dirs to match new blocks
* fix: add new blocks to help-category-map
* fix: update completion-modal for new GQL schema
* test: duplicate title/id errors -> warnings
* fix: update completion-modal to new GQL schema Mk2
* chore: re-order metas (again)
* fix: revert super-block-intro changes
The intro needs to show both legacy and new content. We need to decide
which pages are created, rather than than what a page shows when
rendered.
* feat: move upcoming curriculum into own superblock
* fix: handle one certification with two superBlocks
* fix: remove duplicated intros
* fix: remove duplicate projects from /settings
* fix: drop 'two' from Responsive Web Design Two
* chore: rename slug suffix from two to v2
* feat: control display of new curriculum
* feat: control project paths shown on /settings
* fix: use new project order for /settings
This does mean that /settings will change before the release, but I
don't think it's serious. All the projects are there, just not in the
legacy order.
* fix: claim/show cert button
* chore: remove isLegacy
Since we have legacy superblocks, we don't currently need individual
blocks to be legacy
* test: fix utils.test
* fix: verifyCanClaim needs certification
If Shaun removes the cert claim cards, maybe we can remove this entirely
* fix: add hasEditableBoundaries flags where needed
* chore: remove isUpcomingChange
* chore: v2 -> 22
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
* refactor: create superOrder from superblock
* chore: drop superOrders from meta
* fix: return null for 'certifications'
* fix: only set superOrder if it is needed
* fix(tests): remove filter from order tests
* test: use getSuperOrder, since superOrder has gone
* test: ignore certificates
* fix: getSuperOrder throw for 'certifications'
* test: remove certificate special case
It wasn't necessary, anyway (it had never been working because I put
certificate not certification)
Co-authored-by: Nicholas Carrigan <nhcarrigan@gmail.com>
* chore(tools): test curriculum order
* chore: update orders
* fix(tests): temporarily ignore cert super
The Relational Databases cert being 'upcomingChanges' is breaking
the tests.
* fix: graphql query here
* fix: use only one meta
* chore: remove unnecessary superOrders
* chore: zero-based indexing
* fix: update mock
* refactor: remove unused fixture
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@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>
* 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(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.
* fix: restrict removeJSComments to test-evaluator
To prevent @babel from being included everywhere, this only calls
removeJSComments inside the test-evaluator
* test: add removeJSComments test
* Removes comments in js challanges by default
* fix local-scope-and-functions test regex
* fix all languages
* revert language changes
* removed unnecessary removeJSComments from challenges
* fix challanges in other languages
* removed removeJSComments from all challanges
* feat: get helpCategory from frontmatter
* DEBUG: sets all the projects to JavaScript
This is just so the tests pass, it'll need to go.
* fix: updated helpCategoryMap categories
* fix: added Python to helpCategory frontmatter key
Co-authored-by: Randell Dawson <rdawson@onepathtech.com>
* feat: __testEditable allows editable region tests
It's not entirely isolated, but it makes it possible to select only the
element with id 'editable-only' which is built solely from code inside
the editable region.
* fix(client): missing editableContents -> ''
Previously it was added as the string 'undefined'
* fix: more informative error messages
* fix: DRY, correct and test getLines
* feat: added Cat Photo App project
Added new steps
feat: add tests + targetted hints for demo
simplify wording and combine some tests
feat: update text and add tests/hints
fix: changed descriptions and tests
feat: added tests for part 11 - 15
fix: reworded description for steps 2 and 10
fix: changed isBeta to isHidden
fix: temporarily remove fcc-editable strings
fix: added project to challengeTypes.js
fix: added missing parentheses
fix: test text improvements
fix: changes to tests and text discussed in meeting
fix: adjust logic for detecting indentation in part 07
fix: missing regex characters and made last test more permissive for part 04
feat: add steps 25 to 55 and notes
fix: added h1 element back to steps 5-24
fix: h1 and h2 elements from steps 25 to 50
fix: added missing DOCTYPE declaration steps 20-24
fix: miscellaneous text edits
fix: break up part 28, change local paths for images to short s3 cdn URLs
fix: part 01 and 02 descriptions and tests
feat: pull in changes from #39145 and remove solution sections
fix: adjust descriptions and break up steps 33 and 35
fix: break up more steps and adjust text
feat: add tests for parts 25 - 30
* fix: ran reorder-steps.js
* fix: added editable region markers
* fix: standardize opening tag hint text
* fix: remove trailing periods from descriptions and hints and adjust tests
* fix: remove unnecessary instructions sections
* fix: added test to check for only one h1 element
* fix: removed comma
* fix: changed paragraph element to `p` element
* fix: added test for extra h1 element
* fix: test to validate only one img element exists
* fix: replaced code tags with backticks
* fix: reworded description
* fix: reworded step description
* fix: changed tests for first step
* fix: change last two alt values to sentences
* fix: check for spaces in text strings
* fix: removed extra dot before replace method
* fix: moved example before instruction
* fix: rearranged step 6 tests
* fix: capitalized p in paragraph
* fix: rewored step 7's description and a test text
* fix: corrected test for step 8
* fix: improved step 9 tests
* fix: moved example above instruction
* fix: corrected step 9 test wording
* fix: rearrange test order for step 10
* fix: moved example before instructions for step 11
* fix: improved step 12 descripton and tests
* fix: corrected tests for steps 9, 10, 11, 13, 14
* fix: added ERMs to steps 4-14
* fix: minor typos
* fix: reword steps so examples are above instructions
* fix: introduce inline and block elements and use divs instead of br
* fix: add or adjust tests for steps 15 - 27
* fix: moved ERM up one line
* fix: removed unnecessary quotes in tests' text
* fix: added dfn tags for step 45
* fix: removed adding # to href step
* fix: tests 15 - 16
* fix: reword descriptions so they're not as hand holdy
* fix: reorder/reword steps 58 - 60
* feat: simplify radio button steps
* fix: wording and add demo step
* fix: remove doctype and teach in last step
* fix: update part-demo
* fix: added some more step 15 hints
* fix: added step to introduce section elems
* fix: added section elements to project
* fix: update final code
* fix: update tests for 15a and 16
* fix: add section elements to parts 45 to 61
* fix: change p elements to h3, update tests and text
* fix: added new test for step 9
* fix: fixed/added tests for steps 15-30a
* fix: use fieldset elements instead of divs in the form
* fix: added new test to setp 30a
* fix: changed `main` to `section`
* fix: corrected/added tests for step 31
* feat: add tests 32 - 36
* fix: revert change to js rpg game
* fix: simplify tests 32 - 36
* fix: updated submit-cat-form url
fix: changed submit-cat-form url
* fix: added/rearranged tests steps 32-36
* fix: added tests for step 36a
* fix: used hasAttribute where applicable
* fix: misc edits for steps 10 and 35-36a
* fix: add tests to step 37
* fix: reworded step 37
* fix: added more verbiage to steps 35 and 36
* fix: modified step 38 desc and added tests
* fix: added hints/tests for step 40
* fix: added hints/tests for step 41
* fix: added hints/tests for steps 42 and 43
* fix: made attribute values match exactly
* fix: change wording from text input to text field
* fix: rearrange name attribute lessons
* feat: tests for 44 - 44b
* fix: added a step 35a
* fix: added name="catphotourl" to steps 36-61
* fix: reworded steps 41 and 43
* fix: removed intro to for attribute
* fix: rewrite of step 44b's desc and tests
* fix: added step 45 hints/tests
fix
* fix: removed for attribute from steps 45a-61
* fix: removed extra )
* fix: wrapped "section" with backticks
* fix: added test for steps 45a and 45b
* fix: adjust position of label steps 55-61
* fix: removed conole.log statements
* fix: added tests to step 45c
* fix: renamed step 49 to step 46a
* fix: moved label element for steps 48-53
* fix: reworded step 47 description and instructions
* fix: typos in description and test text
* feat: add tests 46-48
* fix: wording
* fix: remove case insensitivity from a couple of tests
* fix: wording and add erms
* fix: add additional test for step 48
* fix: added hints/tests for step 50
* fix: added hints/tests for step 51
* fix: added hints/tests to step 53
* fix: added hints/tests for step 55
* fix: added hints/tests for step 56
* feat: tests for 57-61
* fix: removed duplicate test in step 55
* fix: adjusted 1st test for step 57
* fix: simplified test for title text
* fix: improved tests for step 60-61
* fix: removed demo.md file
* fix: ran reorder-steps.js
* fix: part 10 description
* fix: part 14 description
* fix: part 24 - move ERMs
* fix: part 05 description
* fix: part 54 test text
* fix: part 06 - wording and add test for p and main closing tag order
* fix: part 50 - add test to check for order of fieldset elements
* feat: value attribute for radio buttons step and seed changes
* feat: value attribute for checkboxes step and seed changes
* fix: update part 14 description
* fix: revert ERMs for part 24
* fix: remove last test in part 06
* fix: text and typos for new radio and checkbox lessons
* fix: text and typos for new radio and checkbox lessons
* fix: add test to part 01
* fix: ran reorder-steps.js
Co-authored-by: Kris Koishigawa <scissorsneedfoodtoo@gmail.com>