* feat: created step instructions for cafe menu
fix: added instructions to steps 1-31
fix: changed steps 29-31
fix: added instructions for steps 32-42
fix: changed prototype class definition
fix: padded file names
fix: added instructions for steps 43-61
fix: add object id to final.md and final prototype to meta.json
fix: correct typos in steps 26 and 27
fix: misc wording changes
fix: added forward slash to closing html tag
fix: added instructions for steps 62-75
feat: added instructions to steps 76-79
fix: added FOOTER comment for steps 68-75
fix: add steps 68a and 68b
fix: add steps 69a and reorder steps
fix: added instructions to the final steps
* fix: remove final.md
* fix: fixed typo of menue to menu
Co-authored-by: Tom <20648924+moT01@users.noreply.github.com>
* fix: changed wording to improve readability
Co-authored-by: Tom <20648924+moT01@users.noreply.github.com>
* fix: changed wording to improve readability
Co-authored-by: Tom <20648924+moT01@users.noreply.github.com>
* fix: changed wording to improve readability
Co-authored-by: Tom <20648924+moT01@users.noreply.github.com>
* fix: combined two lines into same paragraph
Co-authored-by: Tom <20648924+moT01@users.noreply.github.com>
Co-authored-by: Tom <20648924+moT01@users.noreply.github.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>
The warning region does not grow at the edges This makes it harder for
the user to get into an odd state. It might be better to have let the
user expand the second region at the trailing edge. I'm not sure, and
that's harder to implement.
The editor should handle its own rendering. By including a key that
changes as the users changes tabs forces the editor to re-render. This
gets triggered as the user types, resetting the cursor to the start of
the editor.
Now the key only changes if the theme changes.
Generates models to handle multiple groups of code (html, js or css) and
tracks the editor state as user moves between tabs. The current model
is connected to the redux store via a key associated with the file in
the editor.
* Add meta.json for spreadsheet
* Add spreadsheet files
* Close code tags for tests in 2 files
* Add solution section
* Add index file
* Add javascript-spreadsheet to stringifier
* Move index to step
* Rename steps in meta.json
* Rename step numbers in files
* Add index file to proper location
* Remove inappropriate files from spreadsheet dir
* Fix typo in first step
* Fix test sections
* Rename files to correct step
* Fix broken tests
* Add newline between sections
* Change challengeType from 1 to 0
* Add missng ) in step-079.md
* test -> tests in step-079
* Simplify test in step-103
* Fix step-137 test
* Remove last step
* Added solutions and adjusted some tests
* Fix some challenges
* Remove wrong spaces
* Fix more tests
* Add missing semicolon
* Fix more tests
* Fix type: lastttwo
* Fix all remaining tests
* fix: remove isHidden flag from frontmatter
* fix: add isUpcomingChange
Co-authored-by: Ahmad Abdolsaheb <ahmad.abdolsaheb@gmail.com>
* feat: hide blocks not challenges
Co-authored-by: Ahmad Abdolsaheb <ahmad.abdolsaheb@gmail.com>
Co-authored-by: Ahmad Abdolsaheb <ahmad.abdolsaheb@gmail.com>
Prior to this, if a user first loaded a React challenge and then
navigated to a JS challenge, they would see
TypeError: Cannot read property 'presets' of undefined
in the console and be unable to run tests or evaluate code until they
reloaded the page.
* Fixed Redux dev tool plugin in production problem
* Update client/src/redux/createStore.js
Co-Authored-By: Tom <20648924+moT01@users.noreply.github.com>
* Update client/src/redux/createStore.js
Co-Authored-By: Tom <20648924+moT01@users.noreply.github.com>
* Update client/src/redux/createStore.js
Co-Authored-By: Tom <20648924+moT01@users.noreply.github.com>
* Update client/src/redux/createStore.js
Co-Authored-By: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
* Fixed ESLint error
* Second try to fix linting issue
* Third try to fix lint issues
* Update client/src/redux/createStore.js
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
* Update client/src/redux/createStore.js
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
* fix: use env.json for ENVIRONMENT
Co-authored-by: Tom <20648924+moT01@users.noreply.github.com>
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
* feat: update backend project links
Replace solution and remix Glitch links with equivalent Repl.it links in backend projects/challenges and intro pages.
* fix: link and Repl.it casing
* fix: update mention of glitch in testing challenge
* Apply suggestions from code review
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
Co-authored-by: Mrugesh Mohapatra <1884376+raisedadead@users.noreply.github.com>
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
* feat: update learn into
* fix: make text more readable
* fix: adjust global font smoothing
Co-authored-by: Ahmad Abdolsaheb <ahmad.abdolsaheb@gmail.com>
* delay offline warning
* Delayed the offline warning
* delayed offline warning
* revert unwanted changes
* correct spacing
* correct spacing second time
* use let instead of var
* Organized the Certifications on Settings to match the main page
Co-authored-by: Mrugesh Mohapatra <1884376+raisedadead@users.noreply.github.com>
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
jQuery challenges can fail seemingly at random. These changes should
prevent the race condition between a user's $( document ).ready() and
test evalution.
* fix: improve tests for video challenges
* fix: remove unused challenges + get rid of no description warning
* fix: remove non-existent challenges from meta
* fix: fetch csrf cookie and set headers lazily
* fix: check cookie each call to keep it up to date
Previously the cookie was checked once and never updated until the
client was reloaded. Stale or absent cookies would generate incorrect
tokens or no tokens, respectively, causing CSRF errors.
* fix: localise Heatmap to user's timezone
Rather than using ISO formatted date strings, this uses Date objects
for simplicity and to ensure that the heatmap is correct for the
timezone it is viewed in. It should also match the timeline which is
also localised to the viewing computer's timezone.
* test: update snapshot
react-calendar-heatmap's output depends on the timezone, which means
that snapshots can fail if the timezone changes. This sets the timezone
as UTC during client tests to avoid that problem.
It seems that adding it during the 'build-html' stage meant it was
creating new, unminified, versions of the scripts and overwriting the
existing, minified, ones.
* fix: remove html tags to fix misalignment
* Update client/src/pages/learn/apis-and-microservices/managing-packages-with-npm/index.md
Co-Authored-By: Tom <20648924+moT01@users.noreply.github.com>
Co-authored-by: Tom <20648924+moT01@users.noreply.github.com>
The interview prep section includes many challenges that require long
running calculations which can be mistaken for infinite loops. This
removes the loop protection from those challenges, while the tests are
being evaluated.
It keeps the protection for the preview, since it is easy to create
broken code while working on a challenge and that should not crash the
site.
* feat: enable MathJax for Project Euler challenges
Enables MathJax to render mathematical formulae for some Project Euler problems
* refactor: DRY out script insertion
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
Code like `var xs = []; while(true){ xs.push(1) }` can quickly run the
browser out of memory causing it to crash. These changes stop user loops
from running indefinitely so that common mistakes will no longer cause
the browser to crash.
Also, the user is informed if a long running loop is detected (js and
jsx challenges) during preview or testing. Before this there was no
protection for js challenges and no information was given to the
user if they had created such a loop.
Co-Authored-By: Tom <20648924+moT01@users.noreply.github.com>
Co-Authored-By: mrugesh <1884376+raisedadead@users.noreply.github.com>
Co-Authored-By: Randell Dawson <5313213+RandellDawson@users.noreply.github.com>
* fix(client): report cross origin errors
This reports errors generated in cross origin scripts to the dev console
and lets the user know via the fcc console.
* refactor: clean up script error checks
Co-Authored-By: Randell Dawson <5313213+RandellDawson@users.noreply.github.com>
* Added displayUsername and username update functionality
* fix: move username assignment to safe place
moved the username assignment down a statement so that it doesn't cause exception
* fix: handle missing username or displayUsername
* refactor: remove redundant code
* fix(client,server): usernames should not be a http error code
* feat: reject invalid chars first
Co-authored-by: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
* Implemented pagination on timeline
* Made requested change and removed outline from button
* fix: PropTypes and off-by-one error
* Keep buttons centered in all cases and give fixed height timeline table rows to prevent jerk while changing pages
* First and last page navigation and margin issue fix.
* Explicitly importing specific lodash functions
* Refactored timeline pagination into a separate file.
* Refactored timeline to have total Pages as prop and made text corrections.
* Added proptypes for total pages
* made changes to setState call for lastPage
* Made a11y changes
This commit updates the layouts and the styles to be consistent with the rest of the application. This also ensures now that the gatsby navigation is used for smoother transtions.
* fix: broken Read-search-ask link now point to correct url
* fix: changed link to original forum link with more views
* fix: changed http links to correct version
* fix: link in help modal
- [x] two column layout for the page.
- [x] amount to learning minutes mapping for contribution impact.
- [x] handle one-time and recurring stripe subscription charges.
- [x] server side validation of donate forms.
- [x] prevent multiple subscriptions and onetime donations per user.
Console logs from testString get reported and test errors are sent to
the dev console (JS).
challenge building is only attempted if there is a build function to do
so.
Various functions have been renamed to better reflect what they do.
Certain challenges involve code that is not run until the user
interacts with the preview (typically via a click listener). This uses
consoleProxy to report those errors.
Error logging has been simplified, reducing the number of places errors
can be reported from.
Some of the redux-saga code has been renamed in an attempt to improve
clarity.
console.logs and errors are only reported during the first evaluation of
the user's code. This is because the code is evaluated for each test,
but the logs will not change between the build phases of the tests.
Errors thrown during testing (except failing assertions) are always
reported. This is to inform the user that their code is faulty, rather
than that it does not meet the challenge's requirements.
Any console.logs inside script tags will be written to the fcc console
as the user types. DOM challenges only.
Also, DRYed out the main and test frame creation.
Errors thrown during evaluation of the user's code will now be reported.
JavaScript challenges will only report to the browser console and only
during testing.
DOM challenges will report to the browser console during testing and as
the user types, but only report to the fcc console during testing
Previously only challenges with previews would inform the user of syntax
errors. This extends that to all challenges and corrects the output
format so errors are clearer.
* fix: make help button use subforum topics
* fix: add test to check that block exists
Co-authored-by: ojeytonwilliams <ojeytonwilliams@gmail.com>
* fix: improve error message
* Update curriculum/test/test-challenges.js
Co-Authored-By: Oliver Eyton-Williams <ojeytonwilliams@gmail.com>
* fix(client): add cache-busting hashes to chunks
* fix: create cache-busting names for the workers
Prior to this PR the first webpack compilation gave the workers static
names. This can cause caching problems, so this PR adds hashes to
their names to invalidate the cache.
In order for Gatsby to find them, the names are added to the
config directory.
Users can now press ctrl/cmd+f1 to toggle the screen reader mode, in
addition to using the accessibility tooltip. The mode now persists
between challenges.
If screen reader mode is on, the instructions are focused by default so
the user is not required to navigate to them before reading starts.
* [ FIXES ] - fixed function keyword not misspelled
* Update client/src/pages/learn/javascript-algorithms-and-data-structures/debugging/index.md
Co-Authored-By: Randell Dawson <5313213+RandellDawson@users.noreply.github.com>
* fix: added comment back into example code
Removed the donate page tests, which seemed weirdly depending on
the rendered tree. Unreliable at the best.
We sould be adding comprehensive tests to the components instead.
This commit removed the donate modal and related wiring,
although some of the state mapping is still around.
The remaining state mapping can either be removed, or kept
for now, because it will be replaced as is for the newer
motivation based donation prompts