Question:
Challenge: " Modify function multiplyAll so that it multiplies the product variable by each number in the sub-arrays of arr" That would mean multiplying each number in the sub-arrays of ‘arr’ by 1, while the “official” solution of the challenge is (product *= arr[etc. etc.] since the problem instructions never specifies the PRODUCT variable should be changed at any point. I would solve this contradiction by putting product as an argument of the function and making the student code it, or just changing the instructions to ask to multiply each element by 1.
I see very few people making this mistake on the forum. I came across one post where someone did. So I guess we could maybe make it a little more clear. I don't like this because it's not really what the challenge was designed to have happen. This isn't bad, but then the hints and solution would need to be updated. So I would prefer to just change the instructions around a little so it's more clear.
Hi, I've never contributed to an open-source project before and Free Code Camp is one of the resource that got me into coding in the first place, so if there's an opportunity to help it'd be awesome! I was thinking that the instructions aren't too bad on this example, but it could help to include an example of how the code should work. I would probably just add a line under the current instructions that says something along the lines of: For example: multiplyAll([2,3], [ 4,5]) should return the product of 1 2 3 4 5, where the 1 comes from the initial value of the "product" variable.
I don't know about adding this example. It feels unnecessary.
I agree with changing the wording. What about this: Modify function so that it performs repeated multiplication on the variable with each number in the sub-arrays of . <p align="center"OR</pModify function so that it multiplies each number in the sub-arrays of with one another times the variable. Those are the only ways I can think of rewording, without any additional context.
I personally do not see a reason to change this challenge, but if others agree it needs to be changed, then I would vote for second suggestion above.
I like this... Use a nested loop to make the function return the product of all the numbers in the sub-arrays of .
I gave it some thought. I would solve it by sticking to a recurring pedagogical device in other challenges of FCC: Make the instructions clear about "obtaining the product of each number and the next one", and provide a code example that does a similar operation with a different array, perhaps a division or addition.
"Multiplying product variable by each number" sounds correct to me I'm not sure it's possible to perform this without changing product variable. It's kinda implicit here
As this issue is going stale: I suggest we make this a first-timers issue with the following expected change: Modify function so that it returns the product of all the numbers in the sub-arrays of .
Hello. I am new and would love to contribute. I would like to fix this issue, if no one is already on it.
, I do not think anyone is working on it. Go ahead . Be sure to read our , if you have not already.
sir can you help me understand the code
, sure. Generally, I recommend you either send a message on the Contributors chat room on Gitter, or you can ask on the . What are you struggling to understand, so far?
I saw there had been no activity on this for almost a week, so I wanted to try my hand at making my first contribution.

## Instructions
  Modify function multiplyAll so that it multiplies the product variable by each number in the sub-arrays of arr   Modify function multiplyAll so that it returns the product of all the numbers in the sub-arrays of arr.
 ## Tests


Question:
Originally posted by _
Can you explain exactly where the issue is
The issue i see is that, if someone poorly implements the eat function, they don't get feedback that they did something wrong. Take this code for example: Console output: Still passing the lession, although im deviding by zero ;)
We could spy on the console and assert, that after () is called, the spy got called once with "nom nom nom". Since we are using chai allready, i assumed we could just use it in the markdown files. My code so far (): Maybe it's helping someone :)
it's a nice idea, but we only use the core package, not . A custom solution where you proxy should work, albeit with a little more effort.
I tried doing this Unfortunately, this does not work.
that's almost right and it's a neat approach. I played with it for a bit and came up with: Since each test is isolated, there's no need to restore the original .
awesome! Do you mind if I push this or will you do that?
Not at all, go for it!
I guess you can add the change for all languages :)
No need to do that. We are working to using the English version of the file's to work across all languages. See PR for more information.
Once we merge your PR, you can find all the challenges where we need to test for a specific value being logged to the console.
Acknowledged. Thanks for the heads up. I will push the fixes for all such instances.
Make sure to put the others on a different PR, so as not to hold up your existing PR.
of course :)

testString: assert(beagle instanceof Animal); - text: The constructor for beagle should be set to Dog. testString: assert(beagle.constructor === Dog);  - text: beagle.eat() should log "nom nom nom" testString: | console.log = function(msg){throw msg;} assert.throws(() => beagle.eat(),"nom nom nom"); - text: beagle.bark() should log "Woof!" testString: | console.log = function(msg){throw msg;} assert.throws(() => beagle.bark(),"Woof!");  ```


Question: These should be available without any access tokens: [x] Used for public profile views. [x] Used for confirming and email. [x] Health Check

import { wrapHandledError } from '../utils/create-handled-error'; const authRE = /^/auth//; <ins> const confirmEmailRE = /^/confirm-email$/; </ins> const newsShortLinksRE = /^/n/|^/p//; <ins> const publicUserRE = /^/api/users/get-public-profile$/; const publicUsernameRE = /^/api/users/exists$/; </ins> const resubscribeRE = /^/resubscribe//; const showCertRE = /^/certificate/showCert//; // note: signin may not have a trailing slash const signinRE = /^/signin/; <ins> const statusRE = /^/status/ping$/; </ins> const unsubscribedRE = /^/unsubscribed//; const unsubscribeRE = /^/u/|^/unsubscribe/|^/ue//; const updatePaypalRE = /^/donate/update-paypal/; const _whiteListREs = [ authRE, <ins> confirmEmailRE, </ins> newsShortLinksRE, <ins> publicUserRE, publicUsernameRE, </ins> resubscribeRE, showCertRE, signinRE, <ins> statusRE, </ins> unsubscribedRE, unsubscribeRE, updatePaypalRE

describe('request-authorization', () => { describe('isWhiteListedPath', () => { const authRE = /^/auth//; <ins> const confirmEmailRE = /^/confirm-email$/; </ins> const newsShortLinksRE = /^/n/|^/p//; <ins> const publicUserRE = /^/api/users/get-public-profile$/; const publicUsernameRE = /^/api/users/exists$/; </ins> const resubscribeRE = /^/resubscribe//; const showCertRE = /^/certificate/showCert//; // note: signin may not have a trailing slash const signinRE = /^/signin/; <ins> const statusRE = /^/status/ping$/; </ins> const unsubscribedRE = /^/unsubscribed//; const unsubscribeRE = /^/u/|^/unsubscribe/|^/ue//; const updatePaypalRE = /^/donate/update-paypal/; const whiteList = [ authRE, <ins> confirmEmailRE, </ins> newsShortLinksRE, <ins> publicUserRE, publicUsernameRE, </ins> resubscribeRE, showCertRE, signinRE, <ins> statusRE, </ins> unsubscribedRE, unsubscribeRE, updatePaypalRE

it('returns a boolean', () => { const result = isWhiteListedPath(); expect(typeof result).toBe('boolean'); }); it('returns true for a white listed path', () => { <del> expect.assertions(2); </del> const resultA = isWhiteListedPath( '/auth/auth0/callback?code=yF_mGjswLsef-_RLo', whiteList


Question:
<!-- NOTE: If you're reporting a security issue, don't create a GitHub issue. Instead, email We will look into it immediately. --Describe your problem and how to reproduce it: I followed along with the video entered the code exactly and the first test fails second test passes the code is correct so the test I think is broke Add a Link to the page with the problem: Tell us about your browser and operating system: Browser Name: microsoft edge Browser Version: Operating System: windows 10 If possible, add a screenshot here (you can drag and drop, png, jpg, gif, etc. in this box):
worked in chrome only test I have had trouble with so far
Please use for debugging the code of your projects. If the forum members determine there is nothing wrong with your code, you can request this issue to be reopened. GitHub issues are meant for reporting bugs and not troubleshooting the code in your projects. Thank you for understanding.
not n issue with code issue with test it worked in chrome and not edge test is broken on Microsoft edge
What code did you try on Microsoft Edge? What errors (if any) did you see in the browser's console (not the FCC console)?
I followed the code in the video for help
Please post what you see in your browser's console. Thank you. Also, please post the code you tried.
I notice if I add the following to the first test's testString (when testing locally): I only see the following in Edge vs the following in Chrome:
What version of Edge are you running? and It passes for me in the Chromium-based version which is the only version I have, so I'd like to know what version you are running. Does it give you the same output if you run the log from the browser console? I get the full object when I run it in the console. Not sure where it is getting from, I only see that on the fa icons (animated icons) and in the bootstrap file for the main site. I don't think it should show up in the output/test iframe context. I don't see it in the object when I run the log in the browser console. Side note, not really sure why the test is using getComputedStyle, as far as I know using should be exactly the same. It's a bit shorter and maybe less confusing than mixing Jquery and plain JS. Or just switching it to only plain JS for all of it.
I tested it using Edge version 44..449.0 on Windows 10 Home. It gives the same from the browser console. On Chrome it works as expected. FYI - When I in the browser console, I see not using Edge. For Chrome, I see .
Well, I can't test it using that version (unless I set up a VM for it). Not sure where it is getting the pixel value from, that seems very odd. I don't understand how set to 100% would ever compute to a pixel value. Using should be the same as using getComputedStyle. Looking at the jQuery source I'm not sure why it wouldn't be the same. Jquery source for reference
Can I take a look at this issue?
sure, go for it.
For these challenges, are the helper-functions ready to be used in the tests? Or, can a simple fix be made like:
That is what it was before So I don't see why not. As for the helper-functions, I don't know anything about that. I'd still like to know why Edge is giving the result it is, but I guess it doesn't matter much.
Well, , you were involved with the current change. Are we better leaving it as is, changing the test to use regex, or change it to what it was before ?
No, the helper functions aren't ready Looks like the method won't work for edge. So yes, probably need to go back to regex here if we want it to work on edge. Here's a modification of something I have used in the past to isolate the styles of a selector... ^ I modified without testing, hoping to get a helper function for isolating styles to the PR for those.
This is still causing problems every now and then. Have we abandoned the support of the older Edge versions (prior to the switch to Chromium), or should we fix this by switching back to a regex?

id: 587d78b1367417b2b2512b09 title: Make an Image Responsive challengeType: 0 <del> videoUrl: 'https://scrimba.com/p/pzrPu4/cz763UD' </del> forumTopicId: 301140 dashedName: make-an-image-responsive ---


Question: <img width="428" alt="Screen Shot 2020-03-26 at 8 07 49 PM" src="https://user-"The rosetta code challenges are all in alphabetical order except those first few. I did some digging and found that regenerated some mongo ID's for the challenge files. But it looks like those ID's we're never updated to match in the . I'm assuming that's the problem. And strangely I can't find them when I search my local DB - This may cause some issues if someone tries to submit one of these - not sure. Edit: that first link is actually to a commit and not a PR - with that commit Seems like there should be a test for this.

"Largest int from concatenated ints" ], [ <del> "5a23c84252665b21eecc7edd", </del> <ins> "5e4ce2b6ac708cc68c1df25e", </ins> "Last letter-first letter" ], [

"Left factorials" ], [ <del> "5a23c84252665b21eecc7ee1", </del> <ins> "5e4ce2bbac708cc68c1df25f", </ins> "Letter frequency" ], [ <del> "5a23c84252665b21eecc7ee2", </del> <ins> "5e4ce2eaac708cc68c1df260", </ins> "Levenshtein distance" ], [ <del> "5a23c84252665b21eecc7ee3", </del> <ins> "5e4ce2f5ac708cc68c1df261", </ins> "Linear congruential generator" ], [ <del> "5a23c84252665b21eecc7eec", </del> <ins> "5e4ce2a1ac708cc68c1df25d", </ins> "Long multiplication" ], [


Question:
<!-- NOTE: If you're reporting a security issue, don't create a GitHub issue. Instead, email We will look into it immediately. --Describe your problem and how to reproduce it: You said 'LocalStartegy' instead of 'LocalStrategy' Add a Link to the page with the problem: ! Tell us about your browser and operating system: Browser Name: Browser Version: Operating System: If possible, add a screenshot here (you can drag and drop, png, jpg, gif, etc. in this box):
I'll take it up.

As a reminder, this project is being built upon the following starter project on Glitch, or cloned from GitHub. A strategy is a way of authenticating a user. You can use a strategy for allowing users to authenticate based on locally saved information (if you have them register first) or from a variety of providers such as Google or GitHub. For this project we will set up a local strategy. To see a list of the 100's of strategies, visit Passports site here. Add passport-local as a dependency and add it to your server as follows: const LocalStrategy = require('passport-local');  Now you will have to tell passport to use an instantiated LocalStartegy object with a few settings defined. Make sure this as well as everything from this point on is encapsulated in the database connection since it relies on it!   Now you will have to tell passport to use an instantiated LocalStrategy object with a few settings defined. Make sure this as well as everything from this point on is encapsulated in the database connection since it relies on it!  ```js passport.use(new LocalStrategy(


Question:
This is pretty minor, and I'm not sure if it's in our control. But if you go to any challenge that has the built in code editor. Pressing tab adds four spaces to the code. It would be nice to switch that to two if possible. I think two spaces is the standard, but perhaps it's just my preference.
Agree
It's an option we can set:

}, parameterHints: { enabled: false <del> } </del> <ins> }, tabSize: 2 </ins> }; this._editor = null;


Question:
Hello, I am new to getting involved in open-source projects and simply want to start off slow in getting involved in the community. Under the topic header "Pushing changes to Staging Application" as stated in the second paragraph after step 5, "The release pipeline is triggered automatically when a fresh artefact is available from the connected build pipeline." did you mean "artifact"?
In this context, it's discussing build artifacts. Might just be the case of US English and British English.
Yes. We should probably change it to US English version, . PR is welcome.
You got this?
Oh - Looks like I had accidentally closed this. Up for grabs.
PR

The above steps will automatically trigger a run on the build pipeline for the `production-staging` branch. Once the build is complete, the artifacts are saved as `.zip` files in a cold storage to be retrieved and used later. <del> The release pipeline is triggered automatically when a fresh artefact is available from the connected build pipeline. For staging platforms, this process does not involve manual approval and the artifacts are pushed to the Client CDN and API servers. </del> <ins> The release pipeline is triggered automatically when a fresh artifact is available from the connected build pipeline. For staging platforms, this process does not involve manual approval and the artifacts are pushed to the Client CDN and API servers. </ins> > [!TIP|label:Estimates] > Typically the build run takes ~20-25 minutes to complete followed by the release run which takes ~15-20 mins for the client, and ~5-10 mins for the API to be available live. From code push to being live on the staging platforms the whole process takes **~35-45 mins** in total.


Question:
There are two links in docs. Following are the two links how to work on coding challenges. up freeCodeCamp locally I am also adding screenshot to show more clearly that which links are broken. ! so when we click on these links in README in docs it shows page not found
Nice catch! I will correct this.
i have linked pr for this issue kindly merge it thanks
We will have to figure out a better way to handle links. We are currently using to host our documentation at This means we have to handle links in a way that they work on that page. I think a quick way to work around this would be to rename to which we render on the contribute page. Then we create a in which just has a notice similar to the Thoughts?

You can help expand them and make their wording better. You can also update the user stories to explain the concept better or remove redundant ones and improve the challenge tests to make them more accurately test people's code. <del> **If you're interested in improving these coding challenges, here's [how to work on coding challenges](/how-to-work-on-coding-challenges.md).** </del> <ins> **If you're interested in improving these coding challenges, here's [how to work on coding challenges](how-to-work-on-coding-challenges.md).** </ins> ### Learning Platform

Essentially, we expect basic familiarity with some of the aforementioned technologies, tools, and libraries. With that being said, you are not required to be an expert on them to contribute. <del> **If you want to help us improve our codebase, you can either [set up freeCodeCamp locally](/how-to-setup-freecodecamp-locally.md)** </del> <ins> **If you want to help us improve our codebase, you can either [set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md)** </ins> OR


Question:
<!-- NOTE: If you're reporting a security issue, don't create a GitHub issue. Instead, email We will look into it immediately. --Describe your problem and how to reproduce it: I found the challenge Regular Expressions: Reuse Patterns Using Capture Groups does not give an adequate description of what capture groups do, I would suggest firstly: restructuring the description so that it gives an adequate introduction, e.g. likening them to variables in that they are references to a portion of the Regex. Showing that we can reference them with and depending on whether it's used outside the regex or within it, respectively. AND ONLY THEN describing that "Some patterns you search for will occur multiple times in a string. It is wasteful to manually repeat ..." Add a Link to the page with the problem: Regular Expressions: Reuse Patterns Using Capture Groups Tell us about your browser and operating system: Browser Name: Browser Version: Operating System: If possible, add a screenshot here (you can drag and drop, png, jpg, gif, etc. in this box):
I don't see a huge problem with how it is now. Certainly things could always be better. If you or someone else wants to give it a slight rewrite and make a PR, I wouldn't object - there are a number of forum posts on this challenge.
I agree with some criticisms that were raised. Thanks for sharing. Here is my suggested changes.

# --description-- <del> Some patterns you search for will occur multiple times in a string. It is wasteful to manually repeat that regex. There is a better way to specify when you have multiple repeat substrings in your string. </del> <ins> Say you want to match a word that occurs multiple times like below. </ins> <del> You can search for repeat substrings using <dfn>capture groups</dfn>. Parentheses, `(` and `)`, are used to find repeat substrings. You put the regex of the pattern that will repeat in between the parentheses. </del> <ins> ```js let repeatStr = "row row row your boat"; ``` You could use `/row row row/`, but what if you don't know the specific word repeated? <dfn>Capture groups</dfn> can be used to find repeated substrings. Capture groups are constructed by enclosing the regex pattern to be captured in parentheses. In this case, the goal is to capture a word consisting of alphanumeric characters so the capture group will be `w+` enclosed by parentheses: `/(w+)/`. </ins> <del> To specify where that repeat string will appear, you use a backslash (``) and then a number. This number starts at 1 and increases with each additional capture group you use. An example would be `1` to match the first group. </del> <ins> The substring matched by the group is saved to a temporary "variable", which can be accessed within the same regex using a backslash and the number of the capture group (e.g. `1`). Capture groups are automatically numbered by the position of their opening parentheses (left to right), starting at 1. </ins> <del> The example below matches any word that occurs twice separated by a space: </del> <ins> The example below matches a word that occurs thrice separated by spaces: </ins> ```js <del> let repeatStr = "regex regex"; let repeatRegex = /(w+)s1/; repeatRegex.test(repeatStr); repeatStr.match(repeatRegex); </del> <ins> let repeatRegex = /(w+) 1 1/; repeatRegex.test(repeatStr); // Returns true repeatStr.match(repeatRegex); // Returns ["row row row", "row"] </ins> ``` <del> The `test` call would return `true`, and the `match` call would return `["regex regex", "regex"]`. </del> <ins> Using the `.match()` method on a string will return an array with the matched substring, along with its captured groups. </ins> <del> Using the `.match()` method on a string will return an array with the string it matches, along with its capture group. </del> # --instructions--


Question:
<!-- NOTE: If you're reporting a security issue, don't create a GitHub issue. Instead, email We will look into it immediately. --Describe your problem and how to reproduce it: the "Get Help" button "Watch a video" The code used in the video is outdated. This has caused several campers to post for help on the forum because the answer they copied from the video does not pass the current tests. Here are three just from the past day: The current starter code is as follows: The starter code in the video is as follows: I suggest the video be removed in order to cut down on these forum posts. Add a Link to the page with the problem:
This is another topic of discussion, but based on those forum posts it seems that many people have directly copied the code from the video, possibly without even reading the instructions or looking at the starter code before overwriting it all. It makes me wonder if the help videos are actually that useful as an educational tool.
Just now:
Whilst, at one stage, the code in the videos did correspond to the correct solution, and users could just copy to pass, the videos are still quite helpful. In my opinion, with the code being slightly off, but still relevant, the videos are even more helpful, as it prevents users from just copying the answer, and they have to think for themselves. In my opinion, the videos should remain as is, unless something in them becomes deprecated, as the person in the video still goes through an explanation of what they are doing and why, which is invaluable as a user who wants to learn.
I get your point and agree with you that a slightly off video is more beneficial to those who want to learn, it's just that there are 30+ forum posts with people who have copied directly from the video in the past 3 weeks (since the problem was changed). If the video were removed, then those posts would never show up in the first place. Likewise, for learners who aren't able to solve the new problem on their own, they'll still be able to ask for help on the forum just like always. Only, instead of asking why the video code they copied doesn't pass "even though it should", they'll instead ask about about how to solve the problem as it's written. Then the posters on the forum would be able to answer instead of In my opinion, the former is a much more valuable learning experience for all involved, both because it's more positive and it's actually about the topic.
Yes, fair enough. I guess we should be asking the questions: 1) Will the videos ever be updated? (I assume not, as the style of curriculum is changing) 2) If not, could a note explaining that the video code is not enough to pass the tests be to the introductory page? (just some way to make it clear to avoid the clogging of the forum)
are you still updating the videos for the old curriculum?
I have forwarded this to Beau for a response. Thanks for your patience. Meanwhile recommend linking to this thread from the forum and closing the topics while we arrive at a conclusion.
I'm working on this. I'll update the video.

id: 567af2437cbaa8c51670a16c title: Testing Objects for Properties challengeType: 1 <del> videoUrl: 'https://scrimba.com/c/cm8Q7Ua' </del> <ins> videoUrl: 'https://scrimba.com/c/c6Wz4ySr' </ins> forumTopicId: 18324 ---

id: 567af2437cbaa8c51670a16c title: Testing Objects for Properties challengeType: 1 <del> videoUrl: https://scrimba.com/c/cm8Q7Ua </del> <ins> videoUrl: https://scrimba.com/c/c6Wz4ySr </ins> forumTopicId: 18324 localeTitle: Тестирование объектов для свойств ---


Question:
!
Sample URL:
, I am trying to work on the docs locally, and I have cloned the latest push of the repo, but my docs do not have the navbar. Am I missing something about running the docs locally?
See:
If you have installed and set up freeCodeCamp locally, you can simply do: which should prompt a URL at which its serving the site.
Right. I did all that. Turns out, I was syncing with my fork, and not fCC's.

.docsify-copy-code-button { font-size: 0.7em !important; } <ins> /****** Anchor Headings ******/ a.anchor { padding-top: 48px; } .markdown-section h2 { margin: 0 0 0.8em; } </ins>


Question:
<!-- NOTE: If you're reporting a security issue, don't create a GitHub issue. Instead, email We will look into it immediately. --Describe your problem and how to reproduce it: In the lesson linked below, This will pass: But this wont: The error message says: Add a Link to the page with the problem: Tell us about your browser and operating system: Browser Name: Google Chrome Browser Version: Version 81.0.4044.113 (Official Build) (64-bit) Operating System: Fedora 31 If possible, add a screenshot here (you can drag and drop, png, jpg, gif, etc. in this box):
Interestingly, this code passes:
Considering this is the testString: It seems like a potential issue with the console, ? Related to
I believe the method used to solve a similar problem in would work here. - scroll down to the middle of the section...
On a side note: Should this code be left to be allowed to pass the tests?:
I don't think should pass, since it's just an odd way of writing , rather than how you'd actually use . As for the console, I get in both consoles, which seems fine.
I don't mind passing all that much. Mostly because I am doubting that anyone has actually used that. But I also don't mind fixing it since it's not really how it was intended to be completed. I think the easiest fix would be to change the first test... Your regex should use curly brackets. to something like... - and update the test to check for that.
It's pretty inconsequential, honestly. I'd prefer it to fail, but you're right - it's unlikely many people have done that while actually trying to solve the problem. If it's fiddly to reject that while allowing valid solutions, don't worry about it.

- text: Your regex should use curly brackets. testString: assert(timRegex.source.match(/{.*?}/).length > 0); - text: Your regex should not match "Timber"  testString: assert(!timRegex.test("Timber"));   testString: timRegex.lastIndex = 0; assert(!timRegex.test("Timber"));  - text: Your regex should not match "Timmber"  testString: assert(!timRegex.test("Timmber"));   testString: timRegex.lastIndex = 0; assert(!timRegex.test("Timmber"));  - text: Your regex should not match "Timmmber"  testString: assert(!timRegex.test("Timmmber"));   testString: timRegex.lastIndex = 0; assert(!timRegex.test("Timmmber"));  - text: Your regex should match "Timmmmber"  testString: assert(timRegex.test("Timmmmber"));   testString: timRegex.lastIndex = 0; assert(timRegex.test("Timmmmber"));  - text: Your regex should not match "Timber" with 30 m's in it.  testString: assert(!timRegex.test("Ti" + "m".repeat(30) + "ber"));   testString: timRegex.lastIndex = 0; assert(!timRegex.test("Ti" + "m".repeat(30) + "ber"));  ```


Question:
Did you guys mean 'as long as "name" is a string' in last paragraph? !
Yes, I think that's the intended motive. Please go ahead and create a PR or let us know so I'll put it up for other contributors!
I'll create a PR :)
"as long as" conveys the message to the learner that name must be of the string datatype Create a PR to close this issue

## Instructions
 Make an object that represents a dog called myDog which contains the properties "name" (a string), "legs", "tails" and "friends".  You can set these object properties to whatever values you want, as long "name" is a string, "legs" and "tails" are numbers, and "friends" is an array.   You can set these object properties to whatever values you want, as long as "name" is a string, "legs" and "tails" are numbers, and "friends" is an array.
 ## Tests


Question:
<!-- NOTE: If you're reporting a security issue, don't create a GitHub issue. Instead, email We will look into it immediately. --Describe your problem and how to reproduce it: In the challenge, all the test have results which aren't wrapped with quotation even though they are string. I've checked all the other FCC challenges and confirmed that the other challenges results (if the result is a string), is wrapped with quotation mark (For example: ). This is an formatting inconsistency that'll somewhat confuse the beginners as all the other challenges follow this formatting technique. Add a Link to the page with the problem: You can see visit the page with the problem . Tell us about your browser and operating system: Browser Name: Google Chrome Browser Version: Version 81.0.4044.129 (Official Build) (64-bit) Operating System: Windows 10 (64 Bit) If possible, add a screenshot here (you can drag and drop, png, jpg, gif, etc. in this box): !
Here's a screenshot of the challenge that returns string as an answer and you can see that the strings are wrapped in "" unlike in the challenge. !

```yml tests: <del> - text: <code>convertHTML("Dolce & Gabbana")</code> should return <code>Dolce &amp; Gabbana</code>. </del> <ins> - text: <code>convertHTML("Dolce & Gabbana")</code> should return <code>"Dolce &amp; Gabbana"</code>. </ins> testString: assert.match(convertHTML("Dolce & Gabbana"), /Dolce & Gabbana/); <del> - text: <code>convertHTML("Hamburgers < Pizza < Tacos")</code> should return <code>Hamburgers &lt; Pizza &lt; Tacos</code>. </del> <ins> - text: <code>convertHTML("Hamburgers < Pizza < Tacos")</code> should return <code>"Hamburgers &lt; Pizza &lt; Tacos"</code>. </ins> testString: assert.match(convertHTML("Hamburgers < Pizza < Tacos"), /Hamburgers < Pizza < Tacos/); <del> - text: <code>convertHTML("Sixty > twelve")</code> should return <code>Sixty &gt; twelve</code>. </del> <ins> - text: <code>convertHTML("Sixty > twelve")</code> should return <code>"Sixty &gt; twelve"</code>. </ins> testString: assert.match(convertHTML("Sixty > twelve"), /Sixty > twelve/); <del> - text: <code>convertHTML('Stuff in "quotation marks"')</code> should return <code>Stuff in &quot;quotation marks&quot;</code>. </del> <ins> - text: <code>convertHTML('Stuff in "quotation marks"')</code> should return <code>"Stuff in &quot;quotation marks&quot;"</code>. </ins> testString: assert.match(convertHTML('Stuff in "quotation marks"'), /Stuff in "quotation marks"/); <del> - text: <code>convertHTML("Schindler's List")</code> should return <code>Schindler&apos;s List</code>. </del> <ins> - text: <code>convertHTML("Schindler's List")</code> should return <code>"Schindler&apos;s List"</code>. </ins> testString: assert.match(convertHTML("Schindler's List"), /Schindler's List/); <del> - text: <code>convertHTML("<>")</code> should return <code>&lt;&gt;</code>. </del> <ins> - text: <code>convertHTML("<>")</code> should return <code>"&lt;&gt;"</code>. </ins> testString: assert.match(convertHTML('<>'), /<>/); <del> - text: <code>convertHTML("abc")</code> should return <code>abc</code>. </del> <ins> - text: <code>convertHTML("abc")</code> should return <code>"abc"</code>. </ins> testString: assert.strictEqual(convertHTML('abc'), 'abc'); ```


Question: There's a typo in the PR template on line 14. The word additional is misspelled. !

Closes #XXXXX <del> <!-- Feel free to add any addtional description of changes below this line --> </del> <ins> <!-- Feel free to add any additional description of changes below this line --> </ins>


Question:
Describe the bug The PayPal sdk gets called by the local site, even when there are no keys specified in .env To Reproduce Steps to reproduce the behavior: to any page with a donation component the console a 400 error Expected behavior If the keys are missing, PayPal should not be contacted. Screenshots !
/cc
Hello guys! Does this happen on page or somewhere else too? Can't recreate it anymore, happend only once. I'd like to help with that issue if you don't mind Also, I noticed PaypalButton has a typo -in props, example:
it should happen if you hard refresh on donation page. (and on donation modal) That script loads the button. A solution would be to check for paypalClientId in the render of PaypalButton component and return PayPalButtonScriptLoader only if paypalClientId is truthy.
PR is ready. Could you please take a look? Also about the Stripe issue. I'm not sure if it's expected/known but if I don't configure the key for stripe, the page isn't loading for me at all. <img width="1054" alt="CleanShot 2020-05-11 at 02 59 29 src="https://user-"
Yikes, that seems like it needs a fix as well. Thanks for catching that.

loadScript(subscription, deleteScript) { if (deleteScript) scriptRemover('paypal-sdk'); <del> let queries = `?client-id=${this.props.clinetId}&disable-funding=credit,card`; </del> <ins> let queries = `?client-id=${this.props.clientId}&disable-funding=credit,card`; </ins> if (subscription) queries += '&vault=true'; scriptLoader(

} const propTypes = { <del> clinetId: PropTypes.string, </del> <ins> clientId: PropTypes.string, </ins> createOrder: PropTypes.func, createSubscription: PropTypes.func, donationAmount: PropTypes.number,

render() { const { duration, planId, amount } = this.state; const isSubscription = duration !== 'onetime'; <ins> if (!paypalClientId) { return null; } </ins> return ( <PayPalButtonScriptLoader amount={amount} <del> clinetId={paypalClientId} </del> <ins> clientId={paypalClientId} </ins> createOrder={(data, actions) => { return actions.order.create({ purchase_units: [


Question:
<!-- NOTE: If you're reporting a security issue, don't create a GitHub issue. Instead, email We will look into it immediately. --Describe your problem and how to reproduce it: The last test times out on the given problem and needs to either be removed or replaced with a smaller number. Add a Link to the page with the problem: If possible, add a screenshot here (you can drag and drop, png, jpg, gif, etc. in this box): !
I think it's fair to require people to use efficient algorithms for this section, so I don't think that last test should be removed. Perhaps it's worth stressing (in the first few Euler challenges) that speed is a requirement. That said, the solution in the challenge is wrong: returns 4 when given 8. We should test for that. I think Is fast enough and (hopefully!) correct.
Yup. That works. I see the part about efficiency.
Cool, I think this is a good candidate for a first contribution.
Hello guys! Can I take this? as I understand the task is to update the solution block with a function that performs faster? Thank you!
Hi please do! If you could also add one more test that validates that that would be great, since the existing solution gets that wrong.
Cool, thank you! Will add that too

testString: assert.strictEqual(largestPrimeFactor(5), 5); - text: largestPrimeFactor(7) should return 7. testString: assert.strictEqual(largestPrimeFactor(7), 7);  - text: largestPrimeFactor(8) should return 2. testString: assert.strictEqual(largestPrimeFactor(8), 2);  - text: largestPrimeFactor(13195) should return 29. testString: assert.strictEqual(largestPrimeFactor(13195), 29); - text: largestPrimeFactor(600851475143) should return 6857.

```js <del> const largestPrimeFactor = (number)=>{ </del> <ins> const largestPrimeFactor = (number) => { </ins> let largestFactor = number; <del> for(let i = 2;i<largestFactor;i++){ if(!(largestFactor%i)){ largestFactor = largestFactor/i; largestPrimeFactor(largestFactor); } </del> <ins> for (let i = 2; i <= Math.sqrt(largestFactor); i++) { if (!(largestFactor % i)) { let factor = largestFactor / i; let candidate = largestPrimeFactor(factor); return i > candidate ? i : candidate; } </ins> } return largestFactor; } ```


```yml tests: <del> - text: <code>resolve</code> should be executed when the <code>if</code> condition is <code>true</code>. </del> <ins> - text: <code>resolve</code> should be called with the expected string when the <code>if</code> condition is <code>true</code>. </ins> testString: assert(removeJSComments(code).match(/ifs*(s*responseFromServers*)s*{s*resolves*(s*('|"|`)We got the data1s*)(s*|s*;s*)}/g)); <del> - text: <code>reject</code> should be executed when the <code>if</code> condition is <code>false</code>. </del> <ins> - text: <code>reject</code> should be called with the expected string when the <code>if</code> condition is <code>false</code>. </ins> testString: assert(removeJSComments(code).match(/}s*elses*{s*rejects*(s*('|"|`)Data not received1s*)(s*|s*;s*)}/g)); ```


Question: <!-- NOTE: If you're reporting a security issue, don't create a GitHub issue. Instead, email We will look into it immediately. --Describe your problem and how to reproduce it: Challenge criteria are updated but solution is not updated yet. Here's the and hers's the on GitHub which is currently unable to pass all the tests for the challenge. Add a Link to the page with the problem: Tell us about your browser and operating system: Browser Name: Google Chrome Browser Version: 81.0.4044.138 Operating System: Windows OS If possible, add a screenshot here (you can drag and drop, png, jpg, gif, etc. in this box): !

```js <ins> // The global variable </ins> var fixedValue = 4; <del> const incrementer = val => val + 1; </del> <ins> // Only change code below this line function incrementer (fixedValue) { return fixedValue + 1; // Only change code above this line } </ins> ```


Question:
This project has two user stories that are listed as !
Thank you, for spotting this. This is an easy fix; Here is the culprit file:
hi , Can I go ahead with this?
Hello , As you are considered a Contributor (made at least 1 contribution), I suggest you leave this open to first timers. Thank you, for your understanding.
Hey I figured I'll mention here. I was not aware that we could not do it ourselves. I apologize for the inconvenience.
Hi can I work on this? I am a first-timer
Hi , I think this issue has already been picked up. Feel free to claim an issue with label .
I think that I sent it through but I'm unsure if I did it correctly. It might still need someone with Write access to accept the edits?
I can check it for you
Hi I'm unsure if I am doing this correctly but I have a pending pull request. It needs approval to be submitted.
Hello , sorry, things are quite busy. You have done what you needed to, and, as it stands, your PR is approved. Thank you, for your patience.
Ok thanks for the heads up!

User Story #14: My legend should contain rect elements. User Story #15: The rect elements in the legend should use at least 4 different fill colors. User Story #16: I can mouse over an area and see a tooltip with a corresponding id="tooltip" which displays more information about the area.  User Story #16: My tooltip should have a data-year property that corresponds to the data-year of the active area.   User Story #17: My tooltip should have a data-year property that corresponds to the data-year of the active area.  Here is the dataset you will need to complete this project: https://raw.githubusercontent.com/freeCodeCamp/ProjectReferenceData/master/global-temperature.json You can build your project by forking this CodePen pen. Or you can use this CDN link to run the tests in any environment you like: https://cdn.freecodecamp.org/testable-projects-fcc/v1/bundle.js Once you're done, submit the URL to your working project with all its tests passing.


Question:
<!-- NOTE: If you're reporting a security issue, don't create a GitHub issue. Instead, email We will look into it immediately. --Describe your problem and how to reproduce it: Bug - Test for below code fails with error: checkSign should use multiple conditional operators. Screenshot -1: ! Screenshot - 2: ! How to reproduce It. Instead of Error: “checkSign should use multiple conditional operators.” Error should be: Using multiple ternary operators in statement-if-true part of ternary operator is not best practice. (Increasing clarity of error message) Add a Link to the page with the problem: Link to ; Link to reporting bug on forum:
I agree that some tweaking makes sense. I'd would help if we can capture the fact that the test fails if a) you aren't using a multiple ternary or b) the ternary isn't in the expected format.
I do not think this is what the challenge asks for: This is the code from the docs: What you have constructed is: I agree, you have accomplished_ the task. However, the expected implemented logic is of the form: So, perhaps we should change the challenge instructions to be more specific as to the format...
Sir, please note: this repository is of . Thank You for your reply.
, haha. Yes, I am well aware. I linked to the Mozilla documentation to retrieve an example of Multiple Conditional Ternary Operators. My point is still entirely valid.
` Please try the above code in this . Please check what is required to pass the challenge.
, I have, and I understand exactly why this issue was created. I am pointing out that the format of your solution is not what is expected, which is clearly seen in the example given in the lesson: I agree, you have accomplished the task. However, the expected implemented logic is of the form: Your solution does not contain logic.
Sir the condition to win the challenge is: Use multiple conditional operators in the checkSign function to check if a number is positive, negative or zero. The function should return "positive", "negative" or "zero". We should Use Multiple Conditional (Ternary) Operators.
Perhaps the error message should be "... multiple conditional operators in the recommended format." And perhaps adding a note along the lines of "It's is a best practice to format the multiple conditional operators so that each condition is on a separate line, as shown in the example, for readability."
"It's is a best practice to format the multiple conditional operators so that each condition is on a separate line, as shown in the example, for readability." I would be for adding a note similar.
Closed? Was an update to the description merged?
It is not possible to implement if/else if/else logic using ternary Operator. But the task can be accomplished. No, the expected implemented logic is of the form:
Expected solution (one of 6, very similar to your final answer): If-else version A ternary, or multiple ternary, always can be written with if-else. The challenge and the description is accurate. We just want to add a clarifying comment or two to emphasize the best practice formatting for readability.
Nevermind.
It looks to me like adding clarifying comments is the best solution. So, let's leave this open until a PR gets merged.
I'd like to jump on this, if possible. I'm a first-timer but really excited to learn!
Go for it, This should be a good issue for a first-timer. I recommend taking a look at the , and if you get stuck ask away in the

} ``` <del> However, this should be used with care as using multiple conditional operators without proper indentation may make your code hard to read. For example: </del> <ins> It is considered best practice to format multiple conditional operators such that each condition is on a separate line, as shown above. Using multiple conditional operators without proper indentation may make your code hard to read. For example: </ins> ```js function findGreaterOrEqual(a, b) {

## Instructions
  Use multiple conditional operators in the checkSign function to check if a number is positive, negative or zero. The function should return "positive", "negative" or "zero".   In the checkSign function, use multiple conditional operators - following the recommended format used in findGreaterOrEqual - to check if a number is positive, negative or zero. The function should return "positive", "negative" or "zero".
 ## Tests


Question:
Describe the bug Up and down arrow key don't work after typing JavaScript reserved words To Reproduce to a challenge in Basic JavaScript (Example: ) the following code: (or other JavaScript reserved words) in the second line up or down arrow key on the keyboard pointer can't move to the previous or the next line Expected behavior The pointer can move to the previous or the next line Desktop OS: Windows 10 Browser: Chrome Version: 83.0.4103.61
Yeah, I just tested it. It's reproducible.
It looks like it happens if there's a syntax error. Also it can be cleared by typing anything else. I reproduced it by clearing the editor and then typing At which point the cursor will not move up. However, if you press , everything starts working properly again.
Yeah... it's definitely not a big bug. Might cause minor annoyance though.
Agreed. It's not urgent, but it's definitely not working quite right.
I'm guessing it has to do with the changes we made to the editor in I think the arrow input is stuck inside a hidden suggest menu. I would need to look into it some more but here is a gif showing changing as I click the up and down arrow. I suspect this happens after triggering the menu and the arrow up/down input is supposed to be moving up and down inside the menu. ! The menu from the monaco editor playground ! Edit: It is the menu. You can pick an item from it. let down arrow Enter is replaced with (see screenshot above for the location of length in the menu)

dragAndDrop: true, lightbulb: { enabled: false <del> } </del> <ins> }, quickSuggestions: false </ins> }; this._editor = null;


Question: Is your feature request related to a problem? Please describe. Currently the certificates lack any white space along the top border, making them difficult to screenshot and/or print: ! We should add some white space to the top of the page so the certificate is centered.

margin: 0; padding: 0; } .certification-namespace h1 { margin: 12px 0; } .certification-namespace.container { max-width: 1500px; width: 100%;

align-items: center; min-height: 100vh; flex-direction: column; <ins> padding: 50px; </ins> } .certificate-outer-wrapper .donation-section { <del> padding: 20px 0px; </del> <ins> padding-bottom: 100px; </ins> } .certificate-outer-wrapper .donation-section hr {

} .certification-namespace .information { <del> margin-top: -20px; </del> height: 380px; text-align: center; background-color: var(--gray-05);

} } <del> @media (max-width: 767px) { .certificate-outer-wrapper .donation-section { padding: 20px 20px; } } </del> @media screen and (max-width: 992px) { .certification-namespace header { height: 160px;


Question:
Currently when you complete/claim a certificate there's an entry on the timeline: <img width="582" alt="Screen Shot 2020-05-27 at 9 37 55 AM" src="https://user-"This doesn't seem to be working for the new Scientific Computing with Python, Data Analysis with Python, and Machine Learning with Python certificates.
I'm a new contributor but I'd like to help out on this.
I think this is mostly working. You just need to refresh the page before it shows up... <img width="598" alt="Screen Shot 2020-05-27 at 11 34 12 AM" src="https://user-"Edit: hmm, it seems to be working locally, but not on .dev - the "view cert" button is there in both environments - it just doesn't show on the timeline on .dev
Ah, interesting. This does seem to work locally but not on .dev for some reason.
This may be a one off issue related to where the new/split certificates (Quality Assurance, Information Security, Scientific Computing with Python, Data Analysis with Python, and Machine Learning with Python) were not seeded to the .dev database for some reason. I can confirm this is working locally like mentioned above. thank you for your interest in contributing. Please check out issues with the label for other things we need help with.

import debug from 'debug'; import { isEmail } from 'validator'; import format from 'date-fns/format'; <ins> import { reportError } from '../middlewares/sentry-error-handler.js'; </ins> import { ifNoUser401 } from '../utils/middleware'; import { observeQuery } from '../utils/rx';

Congratulations on behalf of the freeCodeCamp.org team! `; <ins> const failureMessage = name => dedent` Something went wrong with the verification of ${name}, please try again. If you continue to receive this error, you can send a message to support@freeCodeCamp.org to get help. `; </ins> function ifNoSuperBlock404(req, res, next) { const { superBlock } = req.body; if (superBlock && superBlocks.includes(superBlock)) {

[certType]: true }; <del> if (challenge) { const { id, tests, challengeType } = challenge; if ( !user[certType] && !isCertified(tests, user.completedChallenges) ) { return Observable.just(notCertifiedMessage(certName)); } updateData = { ...updateData, completedChallenges: [ ...user.completedChallenges, { id, completedDate: new Date(), challengeType } ] }; </del> <ins> // certificate doesn't exist or // connection error if (!challenge) { reportError(`Error claiming ${certName}`); return Observable.just(failureMessage(certName)); } const { id, tests, challengeType } = challenge; if (!user[certType] && !isCertified(tests, user.completedChallenges)) { return Observable.just(notCertifiedMessage(certName)); </ins> } <ins> updateData = { ...updateData, completedChallenges: [ ...user.completedChallenges, { id, completedDate: new Date(), challengeType } ] }; </ins> if (!user.name) { return Observable.just(noNameMessage);

is2018DataVisCert, isApisMicroservicesCert, isFrontEndLibsCert, <del> is2020QaCert, is2020InfosecCert, </del> <ins> isInfosecQaCert, </ins> isJsAlgoDataStructCert, isRespWebDesignCert } = this.props;

is2018DataVisCert && isApisMicroservicesCert && isFrontEndLibsCert && <del> is2020QaCert && is2020InfosecCert && </del> <ins> isInfosecQaCert && </ins> isJsAlgoDataStructCert && isRespWebDesignCert;

return ( <FullWidthRow key={superBlock}> <Spacer />
Full Stack Certification

Legacy Full Stack Certification

 Once you've earned the following freeCodeCamp certifications, you'll  be able to claim The Full Stack Developer Certification:   be able to claim the Legacy Full Stack Developer Certification:

Responsive Web Design

Front End Libraries

Data Visualization

APIs and Microservices

Quality Assurance

Legacy Information Security and Quality Assurance

<ins> { "name": "Full Stack Certificate", "dashedName": "full-stack-certificate", "order": 5, "time": "", "template": "", "required": [], "superBlock": "certificates", "superOrder": 12, "challengeOrder": [ [ "561add10cb82ac38a17213bd", "Full Stack Certificate" ] ], "isPrivate": true, "fileName": "12-certificates/full-stack-certificate.json" } </ins>

 --- id: 561add10cb82ac38a17213bd title: Full Stack Certificate challengeType: 7 isHidden: false isPrivate: true --- ## Description

 ## Instructions

 ## Tests
 ```yml tests: - id: 561add10cb82ac38a17513bc title: Responsive Web Design Certificate - id: 561abd10cb81ac38a17513bc title: JavaScript Algorithms and Data Structures Certificate - id: 561acd10cb82ac38a17513bc title: Front End Libraries Certificate - id: 5a553ca864b52e1d8bceea14 title: Data Visualization Certificate - id: 561add10cb82ac38a17523bc title: API's and Microservices Certificate - id: 561add10cb82ac38a17213bc title: Legacy Information Security and Quality Assurance Certificate ```
 ## Challenge Seed

 ## Solution
 ```js // solution required ```


Question:
Describe your problem and how to reproduce it: The output does not align with the question, nor does it align with the code. I suspect this is what the output was meant to be: Also, I would suggest the formatting of the code to change. Ie. spacing between numbers and , and spacing between numbers. Add a Link to the page with the problem: If possible, add a screenshot here (you can drag and drop, png, jpg, gif, etc. in this box): !
Thanks for catching this I remember copying the output directly from the console, but I must have messed up the spacing while adding the hashes. Took another look and this is what the console outputs: So perhaps it can be: Or with the spacing at the end like you suggest:
, well. What was your intent? I assumed the output was there as an example for what the end result should become. Ie. after performing: Or, was the output just another representation of the output of the ? I suggest it be the expected output of the code the user needs to select, as this helps the user clarify what needs to be done.
right, my intent was to show what the expected end result would be after running . So really the output should be not like it is now. My mistake. I must have forgotten to change the output when I was writing these questions.
Is someone working on this? Can I work on this?
, I am unsure of anyone working on this. You can go ahead, if you want.
Okay. I will be working on it.


Question:
<img width="492" alt="Screen Shot 2020-05-28 at 1 29 28 PM" src="https://user-"<img width="511" alt="Screen Shot 2020-05-28 at 1 28 37 PM" src="https://user-"<hr<img width="518" alt="Screen Shot 2020-05-28 at 1 53 35 PM" src="https://user-"
thanks for catching the code blocks in the answer section looking off. Didn't notice it at first -- maybe it required a refresh? But yeah, looks off with the darker background. Tested this locally and it seems like we can just remove the language (py or python) from the triple backticks: ! I also think it would be better to have all the code in markdown. It's a bit finicky in conjunction with YAML, but makes it much easier to control the formatting/spacing than tags.
How about something like this: ! this is with a background of and using to enable highlighting. I'm not sure what the best background is. This one looks a little better than white and is a bit better from a contrast perspective.
I would like to see the same background color for answers like in Kris's photo, but the code highlighting, like in Oliver's. I think the only way to achieve this is to change some styles after the fact in the css.
Here are some options: ! the first two being white and prism's default (#). The issue being they look progressively better, but get progressively harder to read. in particular starts to fade into the background. That's what got me thinking about this , so I think it's fine to go with the prettiest version as long as we address the a11y issues.
what about changing the whole box to white... <img width="446" alt="Screen Shot 2020-05-29 at 3 41 42 PM" src="https://user-"Kinda solves both issues
Makes sense to me. They might look a little better with a dark border, but either way, I think the white background is the way to go.

} .video-quiz-options { <del> background-color: var(--tertiary-background); </del> <ins> background-color: var(--primary-background); </ins> } /* remove bootstrap margin here */

cursor: pointer; display: flex; font-weight: normal; <del> border: 2px solid var(--secondary-background); </del> <ins> border-left: 4px solid var(--tertiary-background); border-right: 4px solid var(--tertiary-background); border-top: 2px solid var(--tertiary-background); border-bottom: 2px solid var(--tertiary-background); } .video-quiz-option-label:first-child { border-top: 4px solid var(--tertiary-background); } .video-quiz-option-label:last-child { border-bottom: 4px solid var(--tertiary-background); </ins> } .video-quiz-input-hidden {


Question: I got all the certs on .dev and got this email... ! The link should be updated to

Are you interested in contributing to our open source projects used by nonprofits? <del> Also, check out https://www.freecodecamp.org/contribute/ for some fun and convenient ways you can contribute to the community. </del> <ins> Also, check out https://contribute.freecodecamp.org/ for some fun and convenient ways you can contribute to the community. </ins> Happy coding,


Question:
<!-- NOTE: If you're reporting a security issue, don't create a GitHub issue. Instead, email We will look into it immediately. --Describe your problem and how to reproduce it: your code 'Run the Tests' it passes all your tests, again click on 'Run the Tests' time, it will show an error. Add a Link to the page with the problem: Tell us about your browser and operating system: Browser Name: Chrome Browser Version: 83.0.4103.61 Operating System: Windows 10 If possible, add a screenshot here (you can drag and drop, png, jpg, gif, etc. in this box): 1st-time click on 'Run the Tests' ! 2nd-time click on 'Run the Tests ' ! I would love to work on it. Please assign it to me Thank You
Hello there, This issue has been discussed on: And, if you are passing the tests, and returning to fail, it is not much of an issue. So, I will leave the same comment as I did in the forum: To solve, refresh the page. Perhaps, it might be useful to some, if the tests and seed code were rewritten, but refreshing the page, and ensuring the code is correct is a suitable fix. I will leave this issue open, but, seeing as this challenge has existed for a long time, this issue rarely arises, and the workaround is as simple as refreshing, I do not recommend a PR be opened for this.
Okay
While I agree that this isn't the highest priority (as there is a work around), it's still a bug. Someone should not have to refresh the page to reliably pass the tests. That said, it might not be easy to fix. It's possibly a case of re-writing the tests to be async and ing in the tests, but I'm not sure.
I believe this should be fixed with the following assert:
Unfortunately not, since that is basically which passes. needs to return an async function.
oh yeah, you are right, my bad. what about enclosing the assert inside the method?
I am unable to reproduce this locally. Is there a chance that there is some cache reason for this behaviour?
Yes it cant be reproduced locally. I dont think its a cache issue. I believe the latency is too less - the document is loaded instantly whereas the actual environment is slower so we are able to get the mentioned behavior.
I am curious as to what's going on here. My suspicion is that it's a timing issue, that for some runs the test gets evaluated before , but I'm not sure. Since document ready is asynchronous, the assert will be called at some point after the test has already passed. Take a look here: you can see if the test throws during the initial (synchronous) evaluation, the error is caught and the test fails. If instead it doesn't throw and returns a function, then that function should return a Promise. Finally that Promise is ed. If it doesn't throw, then the whole thing passes. The formulation you're talking about won't throw during the first evaluation and does not return a function to be awaited. It should (I think) always pass.
Given that this has been reported for several challenges, I think it's reasonable to assume that all the challenges that rely on could have the problem.
agreed. It would be interesting to figure out a fix for this. I will try on my end but I hope other contributors are actively looking for ways to resolve this.
Yep, it would be good to understand why this is happening. That may not be easy to discover, though, so I'd be happy with a PR that just modifies the tests to wait for .
Some observations: I have Disable Cache turned on under the network tab it always works for me. If I disable it, I can make the tests reliably fail. long as all the files have 0ms delay (memory cache) the test fails, the minute a vendors~chai js file has just a 1ms delay it passes the test (disk cache vs memory cache), . two challenges that are not using jQuery for the assert tests always pass for me. Not sure if it's simply the DOM querying that is the issue, or jQuery itself. How is the browser cache locally disabled? It always does a network fetch and is never fetching from disk or memory. Can that be disabled? As far as I can tell because there is always a fetch delay locally the tests never fail. Which makes it hard to test.
Nice QAing Presumably that tiny delay is enough for all the changes to appear in the DOM. Good question. I tried building the site () and serving it using , but it's still not cached. It might be getting cached when you use .org because of the cdn, but I'm not sure. If that's right, it's something that we will have to deploy to test.
I'm pretty sure this is now fixed on .dev - I can no longer reproduce the problem. could take a quick look and confirm/deny?
Nice job, all the jQuery challenges pass for me now. Ran all of them in Chrome and a few in Firefox. Passed first try every time. :+1:
Nice. Thanks for all your help. Looks like we've got to the bottom of it.

// eval test string to actual JavaScript // This return can be a function // i.e. function() { assert(true, 'happy coding'); } <del> // eslint-disable-next-line no-eval const test = eval(testString); </del> <ins> const testPromise = new Promise((resolve, reject) => // To avoid race conditions, we have to run the test in a final // document ready: $(() => { try { // eslint-disable-next-line no-eval const test = eval(testString); resolve({ test }); } catch (err) { reject({ err }); } }) ); const { test, err } = await testPromise; if (err) throw err; </ins> if (typeof test === 'function') { await test(e.getUserInput); }


Question:
<!-- NOTE: If you're reporting a security issue, don't create a GitHub issue. Instead, email We will look into it immediately. --Describe your problem and how to reproduce it: The tests call for the function to return or . I ran into a user on the forums that was failing to get the tests to pass because they were returning and as strings, rather than boolean values. I wonder if the instructions should be made a little more specific to clarify that the function needs to return boolean values. Add a Link to the page with the problem: Tell us about your browser and operating system: Browser Name: Chrome Browser Version: Version 83.0.4103.61 Operating System: Windows 10 Home v 1909 If possible, add a screenshot here (you can drag and drop, png, jpg, gif, etc. in this box): !
Whilst I can understand the confusion, the general adopted format has been: What is within the code tags is exactly what needs to be returned In other exercises, if the user is asked to return a string, it should be I say should be, because I just encountered another exercise where the test string was not following this format, but it is likely to be fixed.
That format makes complete sense to me. The only reason I bring this up is that I know learning to code can be a frustrating experience for some, and an opportunity to eliminate potential confusion and alleviate some of the self-generated stress seems like a good move.
How about catching this with a test?
I like that idea. It provides a little extra clarity on why the test is failing for the user's code.

```yml tests:  - text: The quickCheck function should return a boolean (true or false), not a string ("true" or "false") testString: assert.isBoolean(quickCheck(['squash', 'onions', 'shallots'], 'mushrooms'));  - text: quickCheck(["squash", "onions", "shallots"], "mushrooms") should return false testString: assert.strictEqual(quickCheck(['squash', 'onions', 'shallots'], 'mushrooms'), false); - text: quickCheck(["onions", "squash", "shallots"], "onions") should return true


Question:
Some users can claim python, new QA, and new infosec certifications without submitting their required projects on .dev. It seems the api does not find the cert challenge and proceeds by setting the related cert flag on the user object to true. The issue can be resolved by reseeding the db locally. I cannot reproduce this issue at the moment, but I will keep this open in case other users are experiencing the same issue.
Hello! I tested this issue, and I was able to claim the certifications without completing the projects.
could you check if you can see the certification after claiming it? I'm just wondering if this is purely a client-side issue.
I am able to see the four certificates I could claim, yes.
Thanks for checking that. In that case, while it seems likely that it will fine if the database is migrated, the api should definitely default to rejecting certifications it does recognise.
Yes We Can Claim Python Certification Without submitting the Projects.
that's really serious

import debug from 'debug'; import { isEmail } from 'validator'; import format from 'date-fns/format'; <ins> import { reportError } from '../middlewares/sentry-error-handler.js'; </ins> import { ifNoUser401 } from '../utils/middleware'; import { observeQuery } from '../utils/rx';

Congratulations on behalf of the freeCodeCamp.org team! `; <ins> const failureMessage = name => dedent` Something went wrong with the verification of ${name}, please try again. If you continue to receive this error, you can send a message to support@freeCodeCamp.org to get help. `; </ins> function ifNoSuperBlock404(req, res, next) { const { superBlock } = req.body; if (superBlock && superBlocks.includes(superBlock)) {

[certType]: true }; <del> if (challenge) { const { id, tests, challengeType } = challenge; if ( !user[certType] && !isCertified(tests, user.completedChallenges) ) { return Observable.just(notCertifiedMessage(certName)); } updateData = { ...updateData, completedChallenges: [ ...user.completedChallenges, { id, completedDate: new Date(), challengeType } ] }; </del> <ins> // certificate doesn't exist or // connection error if (!challenge) { reportError(`Error claiming ${certName}`); return Observable.just(failureMessage(certName)); } const { id, tests, challengeType } = challenge; if (!user[certType] && !isCertified(tests, user.completedChallenges)) { return Observable.just(notCertifiedMessage(certName)); </ins> } <ins> updateData = { ...updateData, completedChallenges: [ ...user.completedChallenges, { id, completedDate: new Date(), challengeType } ] }; </ins> if (!user.name) { return Observable.just(noNameMessage);

is2018DataVisCert, isApisMicroservicesCert, isFrontEndLibsCert, <del> is2020QaCert, is2020InfosecCert, </del> <ins> isInfosecQaCert, </ins> isJsAlgoDataStructCert, isRespWebDesignCert } = this.props;

is2018DataVisCert && isApisMicroservicesCert && isFrontEndLibsCert && <del> is2020QaCert && is2020InfosecCert && </del> <ins> isInfosecQaCert && </ins> isJsAlgoDataStructCert && isRespWebDesignCert;

return ( <FullWidthRow key={superBlock}> <Spacer />
Full Stack Certification

Legacy Full Stack Certification

 Once you've earned the following freeCodeCamp certifications, you'll  be able to claim The Full Stack Developer Certification:   be able to claim the Legacy Full Stack Developer Certification:

Responsive Web Design

Front End Libraries

Data Visualization

APIs and Microservices

Quality Assurance

Legacy Information Security and Quality Assurance

<ins> { "name": "Full Stack Certificate", "dashedName": "full-stack-certificate", "order": 5, "time": "", "template": "", "required": [], "superBlock": "certificates", "superOrder": 12, "challengeOrder": [ [ "561add10cb82ac38a17213bd", "Full Stack Certificate" ] ], "isPrivate": true, "fileName": "12-certificates/full-stack-certificate.json" } </ins>

 --- id: 561add10cb82ac38a17213bd title: Full Stack Certificate challengeType: 7 isHidden: false isPrivate: true --- ## Description

 ## Instructions

 ## Tests
 ```yml tests: - id: 561add10cb82ac38a17513bc title: Responsive Web Design Certificate - id: 561abd10cb81ac38a17513bc title: JavaScript Algorithms and Data Structures Certificate - id: 561acd10cb82ac38a17513bc title: Front End Libraries Certificate - id: 5a553ca864b52e1d8bceea14 title: Data Visualization Certificate - id: 561add10cb82ac38a17523bc title: API's and Microservices Certificate - id: 561add10cb82ac38a17213bc title: Legacy Information Security and Quality Assurance Certificate ```
 ## Challenge Seed

 ## Solution
 ```js // solution required ```


Question:
<!-- NOTE: If you're reporting a security issue, don't create a GitHub issue. Instead, email We will look into it immediately. --Describe your problem and how to reproduce it: Example on the page has a double space instead of a single. var ourStr = "I come first." + "I come second." // ourStr is "I come first._I come second." Add a Link to the page with the problem: Tell us about your browser and operating system: Browser Name: Safari Browser Version: 13.1.1 Operating System: macOS If possible, add a screenshot here (you can drag and drop, png, jpg, gif, etc. in this box): <img width="620" alt="Skjermbilde 2020-06-04 kl 21 13 12" src="https://user-"
I can confirm this. Thank you, for spotting it, and pointing it out.
Okay, I believe I have corrected this error.

```js var ourStr = "I come first. " + "I come second."; <del> // ourStr is "I come first.  I come second." </del> <ins> // ourStr is "I come first. I come second." </ins> ``` </section>


Question:
Describe the bug There's some formatting inconsistency in the issue templates. To Reproduce Steps to reproduce the behavior: to create an issue the issue template and you'll find the formatting inconsistency Screenshots !
Good catch Also want to thank you for helping a new contributor with the process of submitting a pull request.

**Desktop (please complete the following information):** - OS: [e.g. iOS] <del> - Browser [e.g. chrome, safari] - Version [e.g. 22] </del> <ins> - Browser: [e.g. chrome, safari] - Version: [e.g. 22] </ins> **Smartphone (please complete the following information):** - Device: [e.g. iPhone6] - OS: [e.g. iOS8.1] <del> - Browser [e.g. stock browser, safari] - Version [e.g. 22] </del> <ins> - Browser: [e.g. stock browser, safari] - Version: [e.g. 22] </ins> **Additional context** Add any other context about the problem here.


Question:
<!-- NOTE: If you're reporting a security issue, don't create a GitHub issue. Instead, email We will look into it immediately. --Describe your problem and how to reproduce it: A couple of concerns were brought up in the Discord server regarding the verbiage on this challenge. First, the language "make sure no space exists between both the variable and the and the value and " is not particularly clear, and could possibly be re-written to something like "make sure no space exists between the variable, the , and the value." Second, it seems that Glitch has a GUI to the .env file which is confusing some users. We could either add text to the instructions to say "We recommend you click to switch the .env file to a text view", or change the instructions to match Glitch's format. I definitely recommend the first option, as it would be more universal to other IDE platforms. This change would likely need to be made in a few places, though. Add a Link to the page with the problem: Tell us about your browser and operating system: Browser Name: Chrome Browser Version: Operating System: Windows 10 Home 1909 If possible, add a screenshot here (you can drag and drop, png, jpg, gif, etc. in this box): Glitch's new GUI !
I agree. The instructions can be made simpler. Also, we should teach how to use the proper syntax in file.... not the GUI that Glitch offers.

# --instructions-- <del> Add `mongodb` and `mongoose` to the project’s `package.json`. Then, require mongoose as `mongoose` in `myApp.js`. Store your MongoDB Atlas database URI in a private `.env` file as `MONGO_URI`. Surround the the URI with single or double quotes, and make sure no space exists between both the variable and the `=`, and the value and `=`. Connect to the database using the following syntax: </del> <ins> Add `mongodb` and `mongoose` to the project’s `package.json`. Then, require mongoose as `mongoose` in `myApp.js`. Create a `.env` file and add a `MONGO_URI` variable to it. Its value should be your MongoDB Atlas database URI. Be sure to surround the URI with single or double quotes, and remember that you can't use spaces around the `=` in environment variables. For example, `MONGO_URI='VALUE'`. When you are done, connect to the database using the following syntax: </ins> ```js mongoose.connect(<Your URI>, { useNewUrlParser: true, useUnifiedTopology: true });


Question:
<!-- NOTE: If you're reporting a security issue, don't create a GitHub issue. Instead, email We will look into it immediately. --Describe your problem and how to reproduce it: On Python curriculum challenge, the correct answer is already selected. Just so we're having the learner do something, I guess either rearranging the options or at the very least not having the correct option already selected should be made. If possible, add a screenshot here (you can drag and drop, png, jpg, gif, etc. in this box): !
I assume this applies to all of the Video Challenges with a solution of 1?
It should be that case, even though I haven't personally verified it
Could we avoid the problem by leaving the radio buttons unselected at the start? It's slightly weird UX, since people expect radio buttons to always have one selected, but it should not be too confusing in the context of a multiple choice question.
It is a valid workaround
/cc
That works. Unselected radio buttons seems to be a convention for multiple choice questions. Additionally, we could display the multiple choice questions as a button group and avoid having the users select the multiple choice question and click on the Check Your Answer.
Just to check, do you mean: remove Check Your Answer and have the modal pop up as soon as the user clicks on the correct answer? Also, since we're discussing UX, keyboard navigation is a bit tricky. There's no visible indicator when you have the answers selected.
Just to check, do you mean: remove Check Your Answer and have the modal pop up as soon as the user clicks on the correct answer? Yes, what do you think?
Sounds good. The only concern I have is that we don't want to encourage people to just guess. However, forcing them click back and forth between the radio buttons and 'Check your answer' probably does not solve that and it's definitely irritating.
For now, let us unselect radio buttons and we take it from there.
w.r.t , should we leave this issue open?
since it's already been moved to 'done' on the project board, I'll create a new feature request to track the remaining points.

this.state = { subtitles: '', downloadURL: null, <del> selectedOption: 0, </del> <ins> selectedOption: null, </ins> answer: 1, showWrong: false, videoIsLoaded: false


Question:
Describe the bug 1) It appears a was accidentally left in the script. 2) A request to my/(a user's) page-data is returning a 404. To Reproduce Steps to reproduce the behavior: to DevTools log or in console, due to: File: Line 126 error in console as in picture below. Expected behavior No Errors, no logs. Screenshots ! Desktop (please complete the following information): OS: Windows 10 Browser: Chrome Version: 83.0.4103.97 Additional Info I believe the: 'progress updates processed where possible' Is useful, and should stay.
I think it would be better to remove all the logs, since we can use the flash messages if we need to communicate information. Ideally, all errors should go to Sentry. This currently does happen for the server, but we haven't implemented it for the client, yet. Basically because there's still a bit too much noise (like the page- 404 in your screenshot).
Yep, git blame and me for missing it in the QA. Reference: A PR is welcome to remove this and any other rogue logs. This is an expected side-effect of us using Gatsby's routing to query and get the user profile available at . Essentially, when you hit , we first let Gatsby check in the static files if something is available at that path, if not we query the API to lookup there for a username. If both conditions fail, we would render an actual 404 page. But for this to work the status code 404 is sort of abused. Its hacky but there is no way around this to the best of my knowledge. Just to clarify, this should be left as is.
any suggestions where to search? I am trying to search around, but there doesn't seem to be, or I am finding those in the challenges code maybe there aren't
It's a bit tricky, because we use console logs as part of the challenge code, but the place to look is in could you explain why 'progress updates processed where possible' should appear in the console?
there are a few, but they all seems needed where they are
I don't know why, but it comes from file line 98
there are some s, s s, too. gets me: of which probably should not be there. I'd like to get input before we remove them, though. I think should eventually make it to Sentry and possibly should too.
could you explain why 'progress updates processed where possible' should appear in the console? , Sorry - my language was too strong. I meant to say: For no other reason than it is a debugging message. Re-thinking about it, I think it could be more useful being changed to , as that is how I interpret the message. After all, it is a component.
There's nothing to apologise for. So, my position is just that debugging messages are things that should be shown to developers, rather than users (if possible). Essentially because that information is intended to help find and fix bugs, which isn't something a user should be expected to do. In this case 'progress updates processed where possible' mostly just indicates that you've navigated to a challenge, so I don't think it's useful. seems worth showing, but only because we don't have access to this information with a remote error logger (Sentry in our case).

isDonating } = user; <del> console.log(showDonation); </del> return ( <Fragment> <Camper


Question: While Gatsby allows us to create globals in we also make use of for that purpose. We should DRY this out and use one ( seems the best). See

const MonacoWebpackPlugin = require('monaco-editor-webpack-plugin'); <del> exports.onCreateWebpackConfig = ({ stage, plugins, actions }) => { </del> <ins> exports.onCreateWebpackConfig = ({ stage, actions }) => { </ins> const newPlugins = [ <del> plugins.define({ HOME_PATH: JSON.stringify( process.env.HOME_PATH || 'http://localhost:3000' ) }), </del> // We add the shims of the node globals to the global scope new webpack.ProvidePlugin({ Buffer: ['buffer', 'Buffer']

<del> /* global HOME_PATH */ </del> import { ofType } from 'redux-observable'; import { tap, ignoreElements } from 'rxjs/operators';

export default function hardGoToEpic(action$, _, { location }) { return action$.pipe( ofType(types.hardGoTo), <del> tap(({ payload = HOME_PATH }) => { </del> <ins> tap(({ payload }) => { </ins> location.href = payload; }), ignoreElements()


Question:
We previously attempted this in , which had its own set of issues. We need the Plyr to work natively with Youtube or alternatively make the YouTube embed not show related videos.
Can I work on this ?
I think this is resolved by a recent PR. We are keeping this open for verification. We have lots of other issues open which we could use your help with. Thanks.

} onReady={this.videoIsReady} opts={{ <del> rel: 0, </del> <ins> playerVars: { rel: 0 }, </ins> width: '960px', height: '540px' }}


Question:
Describe the bug New certificate displays incorrect date. To Reproduce Steps to reproduce the behavior: I can't say I'm really sure of the steps - I claimed the certificate just a few moments ago, and it is still 3 July 2020 local time. The certificate shows "Issued July 4, 2020" however. Expected behavior Certificate earned date should be based on local time? Screenshots ! Desktop (please complete the following information): OS: Windows 10 v. 1909 Browser: Chrome Version: 83.0.4103.116 Additional context The Quality Assurance certification had no such issue.
Is this reproducible locally?
when Date constructor is called on the server-side it outputs date in UTC, right?
timezones are tricky, but the server creates a object and then stores that. There's no timezone information stored with it, so the date sent back is just i.e. the UTC date.
Indeed - timezones are tricky. Thanks for confirming that datetime given back by Node is in UTC. I saw the above code just now. You are absolutely correct I looked at GitHub profile, he lives in USA. Timezone of USA is UTC -4 hours. What I think might be the case here is that might have claimed the certificate after 3 July 2020 8:00 PM. Adding four hours to 3 July 2020 8:00 PM brings it in UTC timezone which gives us date of 4 July 2020. Can you confirm this Do you remember at what time you claimed the cert? What do you think about all this
There are 3 time zones (PST, CST - GMT-6, EST ) in the mainland US or 5 times zone if you include Alaska (GMT-8) and Hawaii (GMT-10). It also depends on the time of year, because of DST (Daylight Savings Time).
I am in the Pacific Timezone, which is currently PDT (due to Daylight Savings Time). I claimed the certificate in question at approximately 17:18 PTD, which translates to 00:18 UTC (pushing the time into the next day). This may be the source of that bug.
oh my god. Timezones are actually complex. Amazing - I believe we have found the source of this bug. IMO, the best solution to this issue will be to append "UTC" to the issued date to make things clear for users. Going after local time will involve getting timezone from users via settings and then querying db for their timezone while claiming cert. This'll be bad in terms of UX as well as perf. So, let's add UTC at the end of issued date... what do you all think?
We should be able to allow users to set a timezone in their user profiles for the correct offset.
Is this in line with what we are wanting: ! ! Or, would something more explicit be necessary?
Something more along the lines of the snippet here:
, Would it be beneficial for a JSON file to be made in the api-server directory, in case the values need to be referenced elsewhere in the platform?
Even if they're only used in one place, it would be better to have the data imported from a separate file. It's just less cluttered that way.
Just so its clear about the implementation, we will need to store the timezone on the user record, and do any computation of the display on the client only.
Just so its clear about the implementation, we will need to store the timezone on the user record, and do any computation of the display on the client only. Thank you, for this clarification. Makes it easier, I suppose.

import { Observable } from 'rx'; import debug from 'debug'; import { isEmail } from 'validator'; <del> import format from 'date-fns/format'; </del> import { reportError } from '../middlewares/sentry-error-handler.js'; import { ifNoUser401 } from '../utils/middleware';

certTitle, username, name, <del> date: format(new Date(completedDate), 'MMMM D, YYYY'), </del> <ins> date: completedDate, </ins> completionTime }); }

import { bindActionCreators } from 'redux'; import { connect } from 'react-redux'; import { createSelector } from 'reselect'; <ins> import format from 'date-fns/format'; </ins> import { Grid, Row, Col, Image, Button } from '@freecodecamp/react-bootstrap'; import FreeCodeCampLogo from '../assets/icons/freeCodeCampLogo'; // eslint-disable-next-line max-len

errored: PropTypes.bool }), isDonating: PropTypes.bool, <del> issueDate: PropTypes.string, </del> showCert: PropTypes.func.isRequired, signedInUserName: PropTypes.string, userFetchState: PropTypes.shape({

<Col md={7} sm={12}>
 Issued   {issueDate}   {format(new Date(issueDate), 'MMMM D, YYYY')}
 </Col>


Question:
In the instructions and unit tests are ambiguous with the word "required". It states: "The Items component should include a propTypes check that requires quantity to be a number." This is unclear as "requires" could mean that this check just simply needs to exist for the test to pass or that quantity should be a number that is required. I suggest either changing the above wording, or adding an additional unit test: "The Items component should include a quantity propType that is required."
! I think the lesson instructions are pretty clear, but I do agree that the test case wording is ambiguous. I would propose that the test message be edited to mirror this instruction.
I do not think the test text should just be a duplicate of the instruction. That would be redundant. Instead, we need to rewrite the text to reflect was is being tested. See below for the current testString prettified: The important part of the test is in the return statement. We are validating that we see the text "" and "Items.propTypes='" after removing whitespaces from the code. There probably is a better testString that could be written also.
I cannot think of a more effective testString, personally. But for the test text, perhaps something like "The component should include a check to require a value for quantity and ensure that value is a number."
Has the same clarity issue, thanks!
I agree that the text should be updated. I just got caught up by the unclear instructions. The way it is, I thought that what was 'required' was that quantity be a number. It doesn't suggest to me that a quantity is required.
Opening this PR for contributions. The test text should be changed to: The Items component should include a <codepropTypes</codecheck to require a value for <codequantity</codeand ensure that its value is a number.

testString: assert((function() { const mockedComponent = Enzyme.mount(React.createElement(ShoppingCart)); return mockedComponent.find('ShoppingCart').length === 1; })()); - text: The Items component should render. testString: assert((function() { const mockedComponent = Enzyme.mount(React.createElement(ShoppingCart)); return mockedComponent.find('Items').length === 1; })());  - text: The Items component should include a propTypes check that requires quantity to be a number.   - text: The Items component should include a propTypes check to require a value for quantity and ensure that its value is a number.  testString: getUserInput => assert((function() { const noWhiteSpace = __helpers.removeWhiteSpace(getUserInput('index')); return noWhiteSpace.includes('quantity:PropTypes.number.isRequired') && noWhiteSpace.includes('Items.propTypes='); })()); ```


Question:
Describe your problem and how to reproduce it: and parameters are swapped in the starting code. As description and tests suggests second parameter should be separator character and third one escape character. Add a Link to the page with the problem:
Thank you, for pointing this out. Not a major issue, but makes sense to change. I am opening this up for first-timers

<div id='js-seed'> ```js <del> function tokenize(str, esc, sep) { </del> <ins> function tokenize(str, sep, esc) { </ins> return true; } ```


Question:
function insertionSort(array) { for(let i=1; i; i++){ let toInsert = array[i]; let j = i-1; while(j = 0){ if(toInsert < array[j]){ array[j+1] = array[j]; } else{ array[j+1] = toInsert; break; } j-- } (array) } return array; } insertionSort([5, 4, 33, 2, 8]); Will make the challenge pass even though the code is not correct which my example shows. The test in the challenge passes, because by chance the first element in the test array is also the smallest and doesnt have to be changed. So adding a second test array with a first element not being the smallest element would solve that issue. Browser: Chrome
I am able to confirm this bug.
Would either of you like to add the necessary test?
I will defer to for the opportunity to make a contribution. If they do not want to make this change, then I can go ahead and do so.

); ``` <ins> `insertionSort([5, 4, 33, 2, 8])` should return `[2, 4, 5, 8, 33]`. ```js assert.deepEqual(insertionSort([5, 4, 33, 2, 8]), [2, 4, 5, 8, 33]) ``` </ins> `insertionSort` should not use the built-in `.sort()` method. ```js


Question:
Describe your problem and how to reproduce it: The challenge says: It should be “HTTP request”, not “HTML request”. Also I don’t get the point in the third sentence “Since HTML is text-based, even if you don’t see the data, it doesn’t mean that it is secret”. What does HTML being text-based have to do with not seeing the data from a POST request? The response to an HTTP request doesn’t even necessarily have to be HTML, or even text-based. None of the examples up to this point has the response been HTML, but JSON. And how does HTML being text-based and not being able to see the data being sent in the request relate to the data being “secret” and why is that important? Add a Link to the page with the problem:
Agreed, thanks for pointing that out. And, yes, the third sentence is misleading. The paragraph in question is I think what the challenge should say is the following: Basically it's a warning that POSTs may look more secure, but you still need encryption!
Hello! This is my first time contributing in the code. I would like to take up this issue if no one is working on it. Thank You!
Welcome No one else seems to have taken this up yet, so please do.

## Description <section id='description'> Besides GET, there is another common HTTP verb, it is POST. POST is the default method used to send client data with HTML forms. In REST convention, POST is used to send data to create new items in the database (a new user, or a new blog post). You don’t have a database in this project, but you are going to learn how to handle POST requests anyway. <del> In these kind of requests, the data doesn’t appear in the URL, it is hidden in the request body. This is a part of the HTML request, also called payload. Since HTML is text-based, even if you don’t see the data, it doesn’t mean that it is secret. The raw content of an HTTP POST request is shown below: </del> <ins> In these kind of requests, the data doesn’t appear in the URL, it is hidden in the request body. The body is a part of the HTTP request, also called the payload. Even though the data is not visible in the URL, this does not mean that it is private. To see why, look at the raw content of an HTTP POST request: </ins> ```http POST /path/subpath HTTP/1.0


Question:
Describe your problem and how to reproduce it: During a challenge, testing various methods of completing them, I’ve noticed one of the coding questions seems to be a little too easy to pass and I believe it could be fixed with a simple additional test. consider this code This code will pass all the tests provided, even though, when the target is changed to for example “sage” it returns I think a test should be with some incorrect middle letters such as testing if each individual letter is correct. Let me know what you think or if I’m being silly! Add a Link to the page with the problem: Tell us about your browser and operating system: Browser Name: Google Chrome Browser Version: Version 84.0.4147.89 (Official Build) (64-bit) Operating System: Windows 10 Pro
I concur you have found an edge case missed by the current tests. Go ahead and create a PR.
Will do. This is exciting!

testString: assert(confirmEnding("He has to give me a new name", "name") === true); - text: confirmEnding("Open sesame", "same") should return true. testString: assert(confirmEnding("Open sesame", "same") === true);  - text: confirmEnding("Open sesame", "pen") should return false. testString: assert(confirmEnding("Open sesame", "pen") === false);   - text: confirmEnding("Open sesame", "sage") should return false. testString: assert(confirmEnding("Open sesame", "sage") === false);  - text: confirmEnding("Open sesame", "game") should return false. testString: assert(confirmEnding("Open sesame", "game") === false); - text: confirmEnding("If you want to save our world, you must hurry. We dont know how much longer we can withstand the nothing", "mountain") should return false.