Add additional async module content covering HTTP and APIs.
Update tests results area to show loading/success/failure status more consistently and clearly.
Add project submission UI and logic to handle submitting and saving project challenges (side note: this worked perfectly with our existing challenge/blob setup).
Add Cypress test for project submissions.
Add removable logic to provide all content to all users and a "Paid Content" label to normally restricted content if a user has not paid (hide this for paid users).
Update Cypress tests for paid content label and new paid content access logic.
Followup:
Add Guided Projects (in a followup later).
Add Special Topics (Postman, GraphQL, RPC, Generators).
Some of these challenges also query external public free APIs. I went ahead and whitelisted these challenges in Torvalds to avoid spamming these APIs from our tests. I verified that initially the solutions do pass the tests. We would probably want to devise a way to mock these requests in our test environment, if we want to enable them there.
There are some issues preserving some logged objects across our iframe border, e.g. response objects. These don't get preserved at all. This is a likely a problem because it limits users ability to probably log and inspect things.
If the code for a challenge hangs on some async code (e.g. a Promise which never completes), the code is stuck in the "running" state and cannot be re-run, even if you solve the challenge, unless you know the shortcut keys to run the code (only on MacOS)... We may want to add a timeout which cancels the "tests running" state.
Projects:
I added the following project ideas. If the ideas seem good, I can add guided projects later.
Current Weather Tool: A CLI tool to fetch and display current weather for a location.
Rock Paper Scissors: A CLI game to play rock paper scissors.
Build an Interactive Dictionary: A CLI tool to lookup words and synonyms using an API.
Demo:
[1]: Some of the new content:
[2]: Paid content label (this shows a tooltip on hover and is clickable to start the checkout flow):
This PR:
Followup:
Notes:
Projects:
I added the following project ideas. If the ideas seem good, I can add guided projects later.
Demo:
[1]: Some of the new content:
[2]: Paid content label (this shows a tooltip on hover and is clickable to start the checkout flow):
[3]: Project submission UI: