Question:
Multiple CSS selectors are valid for this challenge, but only passes the tests. My code passes the tests. No response Device: Laptop OS: Windows 11 Browser: Edge Version: 119 Related: ,
I think the best thing to do here would be to query the DOM for the element directly, check the resulting colour from the query, and assert it is the colour we expect.
Before : ! After Adding the CSS block : ! The color changes, but the cant proceed forward successfully. I wish to contribute
Umm, I'm having second thoughts about this issue. Is it by design that the challenges only check one or two answers? I've seen few other complaints so maybe the vast majority of campers don't have a problem. Don't fix what's not broken, as they say...
I've heard it said before here that valid code should always pass. Ya, you don't need all of those elements in the selector list to change this link color, but the instructions are ambiguous enough that they don't say you can't have them. Granted, most people aren't going to get that detailed, but I have seen more than a few times in the forum where people used or for this step and can't figure out why it isn't passing, even though the hint is telling them to just use . So I do think this step should be fixed and suggestion is right on. Unless we want to change the instructions to require that they only use the element in the selector list.
This issue is open for contribution. The file that you should be updating is Requirements: Remove the "You should use an element selector." test Replace with in the "You should give the element a color of ." test Please make sure you read our as well as our from a pull request, we prioritize contributors following the instructions in our guides. Join us in our or our if you need help contributing; our moderators will guide you through this. Sometimes we may get more than one pull request. We typically accept the most quality contribution followed by the one that is made first. Happy contributing.

# --hints-- <del> You should use an `a` element selector. ```js assert.exists(new __helpers.CSSHelp(document).getStyle('a')); ``` </del> You should give the `a` element a `color` of `#dfdfe2`. ```js <del> assert.equal(new __helpers.CSSHelp(document).getStyle('a')?.color, 'rgb(223, 223, 226)'); </del> <ins> const linkElement = document.querySelector("a"); assert.equal(window.getComputedStyle(linkElement)?.color, 'rgb(223, 223, 226)'); </ins> ``` # --seed--


Question: When writing Python code in the editor, it would can be a bit frustrating for campers to keep track of the indentation specially if the instructions are a bit wordy. Also, the tests would fail in case indentation is incorrect. It would be a good feature to provide assistance within the browser editor to maintain indentation. A good example is how VSCode provides markers: ! No response

selectionHighlight: false, overviewRulerBorder: false, hideCursorInOverviewRuler: true, <del> renderIndentGuides: false, </del> <ins> renderIndentGuides: props.challengeType === challengeTypes.python, </ins> minimap: { enabled: false },


Question:
I realize it is probably just an oversimplification but the part that may need correction is. I think this should say the handler is called when the promise becomes fulfilled. Or something to that effect. More precise verbiage. No response Device: [e.g. iPhone 6, Laptop] OS: [e.g. iOS 14, Windows 10, Ubuntu 20.04] Browser: [e.g. Chrome, Safari] Version: [e.g. 22] Forum: Specs/MDN:
I'd say something like: I think mentioning the might get confusing.
The thing is, it takes two callbacks. An and the optional . So we may have to make the distinction. The name is just the spec definition. It might be less confusing if we show the signature. I pretty much just stole the text from MDN. I think we are far enough into the curriculum that a little technical lingo isn't the worst. It might be a bit verbose although it explains it better if you ask me.
I could go with that, yeah.

# --description-- <del> Promises are most useful when you have a process that takes an unknown amount of time in your code (i.e. something asynchronous), often a server request. When you make a server request it takes some amount of time, and after it completes you usually want to do something with the response from the server. This can be achieved by using the `then` method. The `then` method is executed immediately after your promise is fulfilled with `resolve`. Here’s an example: </del> <ins> Promises are most useful when you have a process that takes an unknown amount of time in your code (i.e. something asynchronous), often a server request. When you make a server request it takes some amount of time, and after it completes you usually want to do something with the response from the server. This can be achieved by using the `then` method. ```js Promise.prototype.then(onFulfilled, onRejected) ``` The `then` method schedules callback functions for the eventual completion of a Promise - either fulfillment or rejection. One of the `onFulfilled` and `onRejected` handlers will be executed to handle the current promise's fulfillment or rejection. When the promise is fulfilled with `resolve` the `onFulfilled` handler is called. </ins> ```js myPromise.then(result => {


Question: This test is whitespace sensitive when it shouldn't be. Fails: Passes: Valid HTML should pass. No response All No response

You should add the `flavor` class to your `p` element. ```js <del> assert(code.match(/<ps*class=('|")flavor1s*>/i)); </del> <ins> assert(code.match(/<ps*classs*=s*('|")flavor1s*>/i)); </ins> ``` You should only have one element with the `flavor` class.


Question:
Originally posted by in We should hide the character images with - we can probably hide all the images, except for maybe the base character.
I believe leaving blank should suffice: I haven't tested locally and only skimmed through the code. Correct me if I'm wrong, I think we are communicating which character is speaking only visually using these images. So hiding the images is one thing, but providing an alternative way to convey the information is another thing.
Yes, definitely, these images should have empty alt text!
Alt text emptied

style={characterFeatureStyles} className='character-feature' src={base}  alt='Character Body'   alt=''  /> <img style={characterFeatureStyles} className='character-feature' src={brows}  alt='Character Brows'   alt=''  /> <img style={characterFeatureStyles} className='character-feature' src={eyesAreOpen ? eyesOpen : eyesClosed}  alt='Character Eyes'   alt=''  /> <img style={characterFeatureStyles} className='character-feature' src={mouthIsOpen ? mouthOpen : mouthClosed}  alt='Character Mouth'   alt=''  /> {glasses && ( <img style={characterFeatureStyles} className='character-feature' src={glasses}  alt='Character Glasses'   alt=''  /> )}


Question:
In you can see the dialogue text in night mode, but not otherwise. The issue is that the font changes colour, but the background image does not.
Ha, this explains why I didn't think there were any captions, I never looked at it in dark mode.
I had the same thought haha

.scene-wrapper { overflow: hidden; position: relative; <ins> color: var(--gray-00); </ins> } .scene-start-screen {


Question:
I know we have had this discussion before but I still think the requirements in the list can be improved. I saw someone link an article and the way it is put in the article by Jessica is more clear. My main gripe with what we have now is the last requirement on the list. There is no reason why it can't be more specific by adding a fourth point to the list (the last point becomes two points). Requirements we have now: If is and isn't an empty string, you need to update the album's array. First, if the album does not have a property, assign it an empty array. Then add the as the last item in the album's array. Requirements from the article: If is but the album doesn't have a property, create an empty array and add to it. If is and isn't an empty string, add to the end of the album's existing array. Better description of the requirements. No response Device: [e.g. iPhone 6, Laptop] OS: [e.g. iOS 14, Windows 10, Ubuntu 20.04] Browser: [e.g. Chrome, Safari] Version: [e.g. 22]
Wording consistency If is and isn't an empty string, but the album doesn't have a property, create an empty array and add to it. If prop is and isn't an empty string, add to the end of the album's existing array. I still hate that we don't distinguish between a string literal and a variable name per our style guide. That makes these instructions more confusing. I think this problem is in the wrong spot and making the learners regurgitate pesudocode they don't really understand and convert it into JS isn't really helping them, but hey, this will be legacy curriculum soon, so that fixes the problem.
I agree, if a value is a string it should be denoted as such. I guess adding "the string" before/after each reference is an option. This challenge has multiple issues the main being it isn't a good function to begin with. It has far too many responsibilities and it isn't teaching good practices. Having the function delete data if the consumer of the API forgets to pass in a value or does it by mistake in dynamic code is a very poor API decision. I would split it into three functions, add, update, and delete. Have it teach proper CRUD functions. I think you mean soon No, but in all seriousness, I haven't followed the update progress so I don't know how far off it is. However, waiting for something to be completely replaced with something new is a sure way of accumulating "technical debt".
There's a thread on the forum about the timing of the rollout
I just saw it. But we should probably not abandon the challenges if they are going to stay, even if they are legacy.
Abandon, no. But I don't think we need to burn much more effort on this challenge. Not saying I'm opposed to the wording (with my proposed tweak) above - just that we really shouldn't worry too much about fiddling more.
If someone wants to follow the article's wording to improve this lesson, then they are welcome to go for it. Personally, I am in the same boat as We have changed and re-changed this lesson so many times, and, in general, we put no effort into legacy curricula. If there is a bug preventing a lesson from passing, then that should be fixed (or the lesson removed), but we should not spend time re-wording legacy content.
Now that the new JS curriculum is live, I think it would be best to stop putting effort into rewording this challenge.
It is hardly much effort. I see no reason why if someone wants to update this they should not be allowed to do so. Just put a help wanted label on it and someone will, or won't do it. We can leave it at that.

-   Your function must always return the entire `records` object. -   If `value` is an empty string, delete the given `prop` property from the album. -   If `prop` isn't `tracks` and `value` isn't an empty string, assign the `value` to that album's `prop`. <del> -   If `prop` is `tracks` and `value` isn't an empty string, you need to update the album's `tracks` array. First, if the album does not have a `tracks` property, assign it an empty array. Then add the `value` as the last item in the album's `tracks` array. </del> <ins> -   If `prop` is `tracks` and `value` isn't an empty string, but the album doesn't have a `tracks` property, create an empty array and add `value` to it. -   If prop is `tracks` and `value` isn't an empty string, add `value` to the end of the album's existing `tracks` array. </ins> **Note:** A copy of the `recordCollection` object is used for the tests. You should not directly modify the `recordCollection` object.


Question:
In the exit exam modal, the primary button comes first then the close button, while the reset progress and delete account modals have it the other way around. We have been displaying buttons from the most used/important to the least (check code -save code -get help), so I think the reset progress and delete account modals should be changed to follow the pattern. It's to maintain the consistency and to prevent the user from clicking the wrong button with their muscle memory (the color in this case helps, but non-sighted users won't have the cue). The button order of the reset progress and delete account modals should be flipped.
Other way around, I think. The exit exam should be flipped. If the top button is the most commonly used one, then we should set that to the non-destructive action here. That way, if someone clicks it out of muscle memory and not intention, they haven't done something irreversible.
Yup, I think the exam one should be flipped - that's how it is in the danger zone on the settings too
Okay, thanks everyone for the input. We are going to proceed with an update in the exit exam modal. This issue is open to first-time code contributors to this repository. The file that you should be updating is Please make sure you read our , we prioritize contributors following the instructions in our guides. Join us in our or our if you need help contributing; our moderators will guide you through this. Sometimes we may get more than one pull request. We typically accept the most quality contribution followed by the one that is made first. Happy contributing.
Yes, I agree. The 'Reset progress' and 'Delete account' buttons should be reversed. The affirmative option always comes first, followed by the negative option.
Hello, I have flipped the order of the buttons. This should reflect the structure that it appears as.
Follow the
I have flipped the order of exit-exam model buttons, Please review it

</Modal.Body> <Modal.Footer className='reset-modal-footer'> <Button <del> data-cy='exit-exam-modal-confirm' block={true} bsStyle='danger' onClick={exitExam} > {t('learn.exam.exit-yes')} </Button> <Button </del> data-cy='exit-exam-modal-deny' block={true} bsStyle='primary'

> {t('learn.exam.exit-no')} </Button> <ins> <Button data-cy='exit-exam-modal-confirm' block={true} bsStyle='danger' onClick={exitExam} > {t('learn.exam.exit-yes')} </Button> </ins> </Modal.Footer> </Modal> );


Question:
I consistently got the following error when running Cypress locally: Run Run either or Cypress attempts to run, but will fail with the above errorOS: MacOS Sonoma I was able to resolve the issue by adding to the command and re-run . I've been having some strange issues lately with localhost so I think this is due to my local setup, but I'm reporting still, to check if anyone was/is experiencing the same problem. We can add a note to the Cypress guide if I'm not the only one ran into it.
Solution: Remove Cypress
So the victim count is 2 now as Sem joined the club. I'll go ahead and add a note to the doc. I've also created to kick off the Cypress removal.

- When prompted in the terminal, select your keyboard layout by language/area Now, [Cypress can be run](how-to-add-cypress-tests.md#_2-run-the-cypress-tests) <ins> ## Troubleshooting ### Unable to Connect to Port 8000 If Cypress fails to run with the following error: ``` CypressError: `cy.visit()` failed trying to load: http://localhost:3000/signin We attempted to make an http request to this URL but the request failed without a response. We received this error at the network level: > Error: connect ECONNREFUSED 127.0.0.1:8000 Common situations why this would fail: - you don't have internet access - you forgot to run / boot your web server - your web server isn't accessible - you have weird network configuration settings on your computer This error occurred while creating the session. Because the session setup failed, we failed the test. ``` You can resolve the issue by: - Going to the root `package.json` file and adding `--host 0.0.0.0` to the `develop:client` command: ```json "scripts": { "develop:client": "cd ./client && pnpm run develop --host 0.0.0.0" } ``` - Then, re-running `pnpm run develop` </ins>


Question:
Need to document the rename challenge tool and the i18n sync tool. Sometime later this week. Not urgent.
I can take this on?
Go for it, Thanks!
I will start with the rename challenge tool, for the i18n sync, I will wait news if it works now

"difficulty": "1.06", "description": [ "Return an array consisting of the largest numbers in the provided array. The array will contain 4 sub-arrays.", <del> "Remember, you an iterate through an array with a simple for loop, and access each member with array syntax arr[i] .", </del> <ins> "Remember, you can iterate through an array with a simple for loop, and access each member with array syntax arr[i] .", </ins> "If you are writing your own Chai.js tests, be sure to use a deep equal statement instead of an equal statement when comparing arrays." ], "challengeEntryPoint": "largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);",

"name": "Sum All Odd Fibonacci Numbers", "difficulty": "2.09", "description": [ <del> "Return the sum of all odd fibonacci numbers up to and including the passed number if it is a fibonacci number.", </del> <ins> "Return the sum of all odd Fibonacci numbers up to and including the passed number if it is a Fibonacci number.", </ins> "The first few numbers of the Fibonacci sequence are 1, 1, 2, 3, 5 and 8, and each subsequent number is the sum of the previous two numbers.", <del> "As an example, passing 4 to the function should return 5 because all the odd fibonacci numbers under 4 are 1, 1, and 3." </del> <ins> "As an example, passing 4 to the function should return 5 because all the odd Fibonacci numbers under 4 are 1, 1, and 3." </ins> ], "challengeEntryPoint": "sumFibs(4);", "challengeSeed": "function sumFibs(num) {n  return num;rn}",

"difficulty": "2.10", "description": [ "Sum all the prime numbers up to and including the provided number.", <del> "A prime number is defined as having only two divisors, 1 and itself. For example, 2 is a prime number because it's only divisible by 1 and 2. 1 isn't a prime number, because it's only divisible  by itself.", </del> <ins> "A prime number is defined as having only two divisors, 1 and itself. For example, 2 is a prime number because it's only divisible by 1 and 2. 1 isn't a prime number, because it's only divisible by itself.", </ins> "The provided number may not be a prime." ], "challengeEntryPoint": "sumPrimes(10);",

"Fill in the object constructor with the methods specified in the tests.", "Those methods are getFirstName(), getLastName(), getFullName(), setFirstName(), setLastName(), and setFullName().", "These methods must be the only available means for interacting with the object.", <del> "There will be some linting errors on the tests, you may safely ignore them. You should see undefined in the console output." </del> <ins> "There will be some linting errors on the tests. You may safely ignore them. You should see undefined in the console output." </ins> ], "challengeEntryPoint": "var bob = new Person('Bob Ross');", "challengeSeed": "var Person = function(firstAndLast) {n    return firstAndLast;rn};",

"Return true if the passed string is a valid US phone number", "The user may fill out the form field any way they choose as long as it is a valid US number. The following are all valid formats for US numbers:", "555-555-5555, (555)555-5555, (555) 555-5555, 555 555 5555, 5555555555, 1 555 555 5555", <del> "For this challenge you will be presented with a string such as "800-692-7753" or "8oo-six427676;laskdjf". Your job is to validate or reject the US phone number based on any combination of the formats provided above. The area code is required. If the country code code is provided, you must confirm that the country code is "1". Return true if the string is a valid US phone number; otherwise false." </del> <ins> "For this challenge you will be presented with a string such as "800-692-7753" or "8oo-six427676;laskdjf". Your job is to validate or reject the US phone number based on any combination of the formats provided above. The area code is required. If the country code is provided, you must confirm that the country code is "1". Return true if the string is a valid US phone number; otherwise false." </ins> ], "tests": [ "expect(telephoneCheck("555-555-5555")).to.be.a("boolean");",


Question: I was helping a with in the new JS curriculum and they weren't able to pass the tests because of the way they formatted their answer. Here was their code We should allow for that code to pass because they got it right. Here are the current tests For all of the tests that use we should instead update it to use a regex solution with instead. That will make it possible for campers to submit answers with different spacing. All of the tests with the to make sure they have a or element should stay the same though. For those, interested in working on this issue, please read through the first. There will be no assignment for this issue. If you are interested in working on it, then you can submit a PR The following code should pass regardless of different formatting with spaces. No response Device: [e.g. iPhone 6, Laptop] OS: [e.g. iOS 14, Windows 10, Ubuntu 20.04] Browser: [e.g. Chrome, Safari] Version: [e.g. 22] No response

```js const stat = document.querySelectorAll('.stat')[0]; <del> assert.equal(stat.innerText, 'XP: 0'); </del> <ins> assert.equal(stat.innerText.trimEnd(), 'XP: 0'); </ins> ``` You should add a `strong` element in your second `.stat` element.

```js const stat = document.querySelectorAll('.stat')[1]; <del> assert.equal(stat.innerText, 'Health: 100'); </del> <ins> assert.equal(stat.innerText.trimEnd(), 'Health: 100'); </ins> ``` You should add a `strong` element in your third `.stat` element.

```js const stat = document.querySelectorAll('.stat')[2]; <del> assert.equal(stat.innerText, 'Gold: 50'); </del> <ins> assert.equal(stat.innerText.trimEnd(), 'Gold: 50'); </ins> ``` # --seed--


Question:
No need to use here since the array is not re-assigned in later steps. We used for other arrays in this project that aren't reassigned. No response All No response
Hello, I fixed this by doing the following: 1) went to 2) found the ID of step-162 () 3) went to the repositories code and searched for the markdown file through ID. 4) the markdown file 5) Updated the markdown file to use 'const' instead of 'let' ! After this commit is approved, this should be able to be closed.
All of the seed code for subsequent challenges would also be changed.
I am not sure what you mean by this. Is there anything I can do to learn this? Are you referring to all references of 'let' initialization to be changed to 'const' in future steps?
Not quite - the answer to this step becomes part of the starting code for all future steps. If we change the instructions to use here, then then starting code on all future steps needs to be swapped to reflect that.
Hi, I raised a PR to fix this

# --description-- <del> Inside `pick`, use `let` to initialize a variable named `numbers` and set it to an empty array. </del> <ins> Inside `pick`, use `const` to initialize a variable named `numbers` and set it to an empty array. </ins> # --hints--

--fcc-editable-region-- function pick(guess) { <del> let numbers = []; </del> <ins> const numbers = []; </ins> } --fcc-editable-region--

--fcc-editable-region-- function pick(guess) { <del> let numbers = []; </del> <ins> const numbers = []; </ins> while (numbers.length < 10) { }

--fcc-editable-region-- function pick(guess) { <del> let numbers = []; </del> <ins> const numbers = []; </ins> while (numbers.length < 10) { numbers.push(Math.floor(Math.random() * 11)); }

} function pick(guess) { <del> let numbers = []; </del> <ins> const numbers = []; </ins> while (numbers.length < 10) { numbers.push(Math.floor(Math.random() * 11)); }


Question:
The test is expecting to use 49 in the slice. Which seems like could have been an error….It should be 50 The test is expecting to use 49 in the slice. Which seems like could have been an error….It should be 50 No response Device: [Laptop] OS: [Windows 10] Browser: [ Chrome] No response
Yes, you are correct. The test is incorrect. I will go ahead and open this up for contribution for the community. Please read through the guidelines first. We do not assign issues. If you are interested in working on this, then work on the issue and create a PR. Several changes need to be made Here is the first file that needs to be updated For step , you will need to update these two tests here to use the correct value of 50 for the slice method. You will also need to update the seed code for steps 28 and 29. Remember that step 29 also has the complete solution which needs to be updated as well Happy coding

If the `bio` text is greater than `50` characters, you should extract the first 50 characters with `slice()` and replace the rest with `...`. Don't forget that indexes are zero-based. ```js <del> assert.match(code, /<ps*class=("|')bio1>${s*bio.lengths*>s*50s*?s*bio.slice(s*0,s*49s*)s*+s*("|')...2s*:/) </del> <ins> assert.match(code, /<ps*class=("|')bio1>${s*bio.lengths*>s*50s*?s*bio.slice(s*0,s*50s*)s*+s*("|')...2s*:/) </ins> ``` If the `bio` text is less than 50 characters, use the `bio` text directly. ```js <del> assert.match(code, /<ps*class=("|')bio1>${s*bio.lengths*>s*50s*?s*bio.slice(s*0,s*49s*)s*+s*("|')...2s*:s*bios*}</p>/) </del> <ins> assert.match(code, /<ps*class=("|')bio1>${s*bio.lengths*>s*50s*?s*bio.slice(s*0,s*50s*)s*+s*("|')...2s*:s*bios*}</p>/) </ins> ```

${author}

${bio.length > 50 ? bio.slice(0, 49) + '...' : bio}

${bio.length > 50 ? bio.slice(0, 50) + '...' : bio}
  ${author} author page
 `;


Question: For , the answer is already provided for them. The starting seed code needs to just be the button element without the onclick. Here is the file that needs changing If you are interested in working on this please read through the first We do not assign issues. If you are interested, work on the issue and then create a PR for the fix. Happy coding! incorrect start code This should be the correct starting seed code No response Device: [e.g. iPhone 6, Laptop] OS: [e.g. iOS 14, Windows 10, Ubuntu 20.04] Browser: [e.g. Chrome, Safari] Version: [e.g. 22] No response

return `
 --fcc-editable-region--  <button class="playlist-song-info" onclick="playSong(${song.id})">   <button class="playlist-song-info">  ${song.title} ${song.artist} ${song.duration}


Question: This step for checking an empty div element is to strict. This answer should be valid but fails the current test The tests only pass with this answer which is to restrictive The last test here needs to be updated to make it account of spacing. Probably using with a regex will be better then here Please read through the first We do not assign issues. If you are interested in working on this, please fix the test mentioned and create a PR Here is the file you will need to change Happy coding! This answer should be valid but fails the current test This answer should pass the tests No response Device: [e.g. iPhone 6, Laptop] OS: [e.g. iOS 14, Windows 10, Ubuntu 20.04] Browser: [e.g. Chrome, Safari] Version: [e.g. 22] No response

Your new `div` should be empty. ```js <del> assert.equal(document.querySelector('.container > div')?.innerHTML, ''); </del> <ins> assert.equal(document.querySelector('.container > div')?.innerHTML.trim(), ''); </ins> ``` # --seed--


Question: The default CSS provided for the Calorie Counter in step 1 has the property set to for the element. I'm going to assume this was just an oversight, and not because you all are trying to cause me an early death by raising my blood pressure. Remove the property completely from the element. No response N/A No response

} button { <del> outline: none; </del> cursor: pointer; text-decoration: none; background-color: var(--light-yellow);


Question:
Description and question refers to the Here's the main office area. And over there, let me show you, that's the conference room. text. However the audio mentions let me show you in context of showing to the desk. n/a Audio used in task should match the description context. Or the other way around. No response n/a No response
Yes, this is a problem. None of the answers are correct. Here's how I'd fix it: change the option "the conference room" to "the desk". This should solve the problem. We could also: simplify the question to "What is Maria directing attention to?" simplify the example to "Here's the main office area. Let me show you to the conference room."
I am fine with the suggestion. You could use as the example. What do you think
Agreed I'm going to add the help wanted label.

# --description-- <del> The phrase `let me show you` can be used to direct attention and introduce something. For example: `Here's the main office area. And over there, let me show you, that's the conference room.` </del> <ins> The phrase `let me show you` can be used to direct attention and introduce something. For example: `This is the main office area. Let me show you to the conference room.` </ins> # --question-- ## --text-- <del> What is the speaker directing attention to after saying `let me show you`? </del> <ins> What is Maria directing attention to? </ins> ## --answers-- <del> The main office area </del> <ins> Main office area </ins> ### --feedback--

--- <del> The kitchen </del> <ins> Kitchen </ins> ### --feedback--

--- <del> The conference room </del> <ins> Desk </ins> --- <del> The elevator </del> <ins> Elevator </ins> ### --feedback--


Question:
The creation of the help wanted forum post should be changed to use correct Python comments for files. Right now the posts are created with the wrong type of comment. !
I want to work on this issue
We typically do not assign issues. Instead, we accept the first pull request that comprehensively solves the issue. Issues labelled with or are open for contributions. Please make sure you read . We prioritize contributors following the instructions in our guide. Join us in or if you need help contributing - our community will be happy to assist you.

export function insertEditableRegions(challengeFiles = []) { if (challengeFiles?.some(file => file.editableRegionBoundaries?.length > 0)) { const editableRegionStrings = fileExtension => { <del> const startComment = fileExtension === 'html' ? '<!--' : '/*'; const endComment = fileExtension === 'html' ? '-->' : '*/'; return `n${startComment} User Editable Region ${endComment}n`; </del> <ins> switch (fileExtension) { case 'html': return 'n<!-- User Editable Region -->n'; case 'css': return 'n/* User Editable Region */n'; case 'py': return 'n# User Editable Regionn'; case 'js': return 'n// User Editable Regionn'; default: return 'nUser Editable Regionn'; } </ins> }; const filesWithEditableRegions = challengeFiles.map(file => {


Question:
The help post now has this header: ! which is It should have only one set of hashtags.
Could you clarify where you see this? I don't seem to have this issue on my end.
I did not specify, sorry, it's for posts that have the following message

const addCodeOne = i18next.t('forum-help.add-code-one'); const addCodeTwo = i18next.t('forum-help.add-code-two'); const addCodeThree = i18next.t('forum-help.add-code-three'); <del> const altTextMessage = `### ${whatsHappeningHeading}nn### ${camperCodeHeading}nn${warning}nn${tooLongOne}nn${tooLongTwo}nn${tooLongThree}nn```textn${addCodeOne}n${addCodeTwo}n${addCodeThree}n```nn${endingText}`; </del> <ins> const altTextMessage = `### ${whatsHappeningHeading}nn${camperCodeHeading}nn${warning}nn${tooLongOne}nn${tooLongTwo}nn${tooLongThree}nn```textn${addCodeOne}n${addCodeTwo}n${addCodeThree}n```nn${endingText}`; </ins> const titleText = window.encodeURIComponent( `${i18next.t(


Question:
The test for Step 44 does not pass as it should when the user creates a newline with a newline literal, and not by pressing the enter key on their keyboard and making the string extend by a line. The challenge should report successful, as the created label has a newline before it. ! ! Device: Desktop, Arch linux, Firefox OS: 6.6.7-arch1-1 Browser: Firefox Version: 120.0.1 (64-bit) No response
Ran into this issue in the today.
Not sure I understand why we care if there is a new line. If this requirement is meant as a code formatting requirement we shouldn't allow the use of and instead change the text to be more precise. Simply changing "with" to "on" might be enough.
Yeah I would improve the instruction as well, instead of changing the tests. The starting code of the subsequent steps have this line on a new line, so I think we should guide campers to follow the same format here.
so it is not a parsing issue then but an instruction issue?
I would say so. I can't imagine the text "Start your with a new line" in any way referring to using . I think it just needs to be clarified.
I can easily imagine people interpreting that as using a at the beginning of the string. Also, this appears to be the first time a step uses multiple lines in a template literal, so it may not be obvious to the user that you can do that, and thus they might think that is their only option. I'm struggling to find a reason why we care whether they use or an actual hard return here? Maybe the point is to teach that template literals allow for multi-line strings? If that's the case then we need to explain that in the instructions. Otherwise, this restriction of not allowing seems rather capricious.
Which is why I said it should be clarified. As far as I'm concerned the new line asked for only serves as code formatting. It has no other importance. <sAllowing doesn't make sense as it does not produce the same code as going down on a new line before creating the element (also it doesn't do anything useful). </sEdit: never mind I thought they had a space as well. But as I said initially, I do not see the importance of testing for the new line. It seems fairly irrelevant.
What about changing the seed code so the user does not need to do this at all? That seems like a good solution to me. Change the instructions to:
It looks like we are still getting users on the forum, getting stuck on this issue. I vote we move forward with 's suggestion of just updating the instructions and changing the editable regions to make it super clear where they need to write their code.
This is what I have and can't still move ahead: function addEntry() { const targetInputContainer = document.querySelector(); const entryNumber = targetInputContainer.querySelectorAll('input[type="text"]').length; const HTMLString = `; HTMLString = <labelEntry ${entryNumber} Name</label`;
Hey Instead of asking for help here, please click the "Help" button on the challenge on freeCodeCamp, which will help you create a question in the right part of the forum. Volunteers on the forum usually respond to questions within a few hours and can help determine if there is an issue with your code or the challenge's tests. Thank you and happy coding.

Your `HTMLString` should be an empty template literal. ```js <del> assert.match(code, /HTMLStrings*=s*``/); </del> <ins> assert.match(code, /HTMLStrings*=s*`n?s*`/); </ins> ``` # --seed--

# --description-- <del> Start your `HTMLString` with a new line, then create a `label` element. Give that element the text `Entry # Name`, using your template literal syntax to replace `#` with the value of `entryNumber`. </del> <ins> Inside your template literal, create a `label` element and give it the text `Entry # Name`. Using your template literal syntax, replace `#` with the value of `entryNumber`. </ins> # --hints-- <del> Your `HTMLString` variable should start with a new line. ```js assert.match(code, /HTMLStrings*=s*`n/); ``` You should add a `label` element on the new line. </del> <ins> You should have a `label` element inside your template literal. </ins> ```js assert.match(code, /HTMLStrings*=s*`ns*<label>.*</label>/);

return str.match(regex); } <del> --fcc-editable-region-- </del> function addEntry() { const targetInputContainer = document.querySelector(`#${entryDropdown.value} .input-container`); const entryNumber = targetInputContainer.querySelectorAll('input[type="text"]').length; <del> const HTMLString = ``; </del> <ins> const HTMLString = ` --fcc-editable-region-- --fcc-editable-region-- `; </ins> } <del> --fcc-editable-region-- </del> ```


Question:
The link above should be: The link to the demo project should link to the demo Tribute Page but links instead to the demo Portfolio Webpage. No response Device: [e.g. iPhone 6, Laptop] OS: [e.g. iOS 14, Windows 10, Ubuntu 20.04] Browser: [e.g. Chrome, Safari] Version: [e.g. 22] No response
Thanks for reporting the issue. We should also update the text to remove the at the start of the sentence. This issue is open to first-time code contributors to this repository. The file that you should be updating is Please make sure you read our , we prioritize contributors following the instructions in our guides. Join us in our or our if you need help contributing; our moderators will guide you through this. Sometimes we may get more than one pull request. We typically accept the most quality contribution followed by the one that is made first. Happy contributing.
Hi! I've created a pull-request for this issue: The only thing that I am worrying about, is tests. Although it's really tiny pull-request and nothing should break, I've tried to run tests just for my interest. But even on a new forked repository without any changes, I have one test fail (see screenshot). <img width="1059" alt="image" src=""I'm sure this has nothing to do with my pull-request, given that this error appears even without any changes. But, for the future, maybe you can tell me if I’m doing something wrong? Or is the problem in the tests?
That looks like a flaky test. Please help open a new issue for it.

# --description--  ++**Objective:** Build an app that is functionally similar to https://personal-portfolio.freecodecamp.rocks. **Do not copy this demo project**.   **Objective:** Build an app that is functionally similar to https://tribute-page.freecodecamp.rocks. **Do not copy this demo project**.  **User Stories:**


Question:
The solution requires that parenthesis do not surround the parameter for the sum function. This is a bit inconsistent since previous projects and steps have either required the parenthesis or has accepted both. Both code answers should be correct. No response Device: [Laptop] OS: [ Windows 11] Browser: [Edge] Version: [120.0.2210.91] No response
Issue is actually with optional space, that's not in regex, as this passes:

Your `sum` function should return the result of calling `.reduce()` on `nums`. ```js <del> assert.match(code, /consts*sums*=(?s*numss*)?s*=>s*nums.reduce(/); </del> <ins> assert.match(code, /consts*sums*=s*(?s*numss*)?s*=>s*nums.reduce(/); </ins> ``` Your `sum` function should return the sum of all numbers in `nums`.


Question:
When testing one camper's code it fails some tests unless I increase all the delays to 1000ms, I tested with 500ms but that was not enough. I also saw the example project fail a test but it does pass more consistently (my guess is it is just faster with fewer async functions). To be on the safe side we should have a longer delay. I know 1000ms is a lot but better safe than sorry. Tests: Valid code should not fail because of "timing" issues. No response Device: [e.g. iPhone 6, Laptop] OS: [e.g. iOS 14, Windows 10, Ubuntu 20.04] Browser: [e.g. Chrome, Safari] Version: [e.g. 22] Forum:
As this is a bug with a certificate project I the showstopper label.

Fulfill the user stories and pass all the tests below to complete this project. Give it your own personal style. Happy Coding! <ins> **Note:** When running the tests there will be a slight delay. Please wait a few seconds to allow the tests to finish. Do not refresh the page before they are done. </ins> # --hints-- You should have an `input` element with an `id` of `search-input` and is **required**.

const res = await fetch('https://pokeapi-proxy.freecodecamp.rocks/api/pokemon/red'); // Fetch from proxy to simulate network delay if (!res.ok) { <del> await new Promise(resolve => setTimeout(resolve, 50)); // Brief additional delay to allow the alert to trigger </del> <ins> await new Promise(resolve => setTimeout(resolve, 1000)); // Additional delay to allow the alert to trigger </ins> assert.include(['pokémon not found', 'pokemon not found'], alertMessage.trim().replace(/[.,?!]+$/g, '').toLowerCase()); }

const res = await fetch('https://pokeapi-proxy.freecodecamp.rocks/api/pokemon/pikachu'); // Fetch from proxy to simulate network delay if (res.ok) { <del> await new Promise(resolve => setTimeout(resolve, 50)); // Brief additional delay to allow UI to update </del> <ins> await new Promise(resolve => setTimeout(resolve, 1000)); // Additional delay to allow UI to update </ins> const pokemonName = document.getElementById('pokemon-name'); const pokemonID = document.getElementById('pokemon-id');

const res = await fetch('https://pokeapi-proxy.freecodecamp.rocks/api/pokemon/pikachu'); // Fetch from proxy to simulate network delay if (res.ok) { <del> await new Promise(resolve => setTimeout(resolve, 50)); // Brief additional delay to allow UI to update </del> <ins> await new Promise(resolve => setTimeout(resolve, 1000)); // Additional delay to allow UI to update </ins> const sprite = document.getElementById('sprite'); assert.isTrue(sprite.src.endsWith('sprites/pokemon/25.png'));

const res = await fetch('https://pokeapi-proxy.freecodecamp.rocks/api/pokemon/pikachu'); // Fetch from proxy to simulate network delay if (res.ok) { <del> await new Promise(resolve => setTimeout(resolve, 50)); // Brief additional delay to allow UI to update </del> <ins> await new Promise(resolve => setTimeout(resolve, 1000)); // Additional delay to allow UI to update </ins> assert.lengthOf(typesEl.children, 1); assert.strictEqual(typesEl?.children[0]?.innerText.trim().toLowerCase(), 'electric');

const res = await fetch('https://pokeapi-proxy.freecodecamp.rocks/api/pokemon/94'); // Fetch from proxy to simulate network delay if (res.ok) { <del> await new Promise(resolve => setTimeout(resolve, 50)); // Brief additional delay to allow UI to update </del> <ins> await new Promise(resolve => setTimeout(resolve, 1000)); // Additional delay to allow UI to update </ins> const pokemonName = document.getElementById('pokemon-name'); const pokemonID = document.getElementById('pokemon-id');

const res = await fetch('https://pokeapi-proxy.freecodecamp.rocks/api/pokemon/94'); // Fetch from proxy to simulate network delay if (res.ok) { <del> await new Promise(resolve => setTimeout(resolve, 50)); // Brief additional delay to allow UI to update </del> <ins> await new Promise(resolve => setTimeout(resolve, 1000)); // Additional delay to allow UI to update </ins> const sprite = document.getElementById('sprite'); assert.isTrue(sprite.src.endsWith('sprites/pokemon/94.png'));

const res = await fetch('https://pokeapi-proxy.freecodecamp.rocks/api/pokemon/94'); // Fetch from proxy to simulate network delay if (res.ok) { <del> await new Promise(resolve => setTimeout(resolve, 50)); // Brief additional delay to allow UI to update </del> <ins> await new Promise(resolve => setTimeout(resolve, 1000)); // Additional delay to allow UI to update </ins> const targetTypes = ['ghost', 'poison']; assert.lengthOf(typesEl.children, 2);


Question:
I'm no language genius but I don't think the requirement is correct. I'm not sure you are supposed to use two full stops in a row after an abbreviation. Not sure if both are correct or what? ,full%20stops%20in%20a%20row Maybe don't end the sentence in an abbreviation if it makes it unclear. Or do not require two full stops. No response Device: [e.g. iPhone 6, Laptop] OS: [e.g. iOS 14, Windows 10, Ubuntu 20.04] Browser: [e.g. Chrome, Safari] Version: [e.g. 22] forum:
I agree that this could be unnecessarily confusing. I also believe that it is technically incorrect to end a sentence with two full stops (periods) even when the sentence ends with an abbreviated word. As I understand it (grammatically) the single full stop serves a dual purpose in this case.
Should we add comma to first full stop or any other suggestion? If yes i am happy to do so?
I suggest changing the sentence to not end with the abbreviation. I think it is more important to teach the use of a period to denote an abbreviation, than it is to teach "no two periods in a row". Maybe that could be another lesson.
I would agree with that. But I would assume that's also more work than just removing the period at the end.
Oh. Right. I completely forgot the video/audio matched the sentence. In that case, I change my suggestion to just removing the period oat the end.
This issue is open to first-time code contributors to this repository. The change you should be making is to remove the period at the end of the sentence, under the section. The file that you should be updating is Please make sure you read our , we prioritize contributors following the instructions in our guides. Join us in our or our if you need help contributing; our moderators will guide you through this. Sometimes we may get more than one pull request. We typically accept the most quality contribution followed by the one that is made first. Happy contributing.

## --sentence-- <del> `_ to _ you all. I'm David, the project _ from FCC _.` </del> <ins> `_ to _ you all. I'm David, the project _ from FCC _` </ins> ## --blanks--


Question:
Jake is explaining the purpose of his visit to Sarah. He's there to hand over something that Sarah needs, which will permit him (should be her) access to certain areas. <!DOCTYPE html<html lang="en" <head</head<body</body</htmlNo response Device: [e.g. iPhone 6, Laptop] OS: [e.g. iOS 14, Windows 10, Ubuntu 20.04] Browser: [e.g. Chrome, Safari] Version: [e.g. 22] No response
Thank you for reporting the issue. This issue is open to first-time code contributors to this repository. The file that you should be updating is Please make sure you read our , we prioritize contributors following the instructions in our guides. Join us in our or our if you need help contributing; our moderators will guide you through this. Sometimes we may get more than one pull request. We typically accept the most quality contribution followed by the one that is made first. Happy contributing.
Next step has similar error. Should be
Hii excellent catch. Solved it locally, will be raising a PR in few minutes. This my first valid pull request, pls assign me if possible !
Thank you for your interest in contributing. We typically do not assign issues. Instead, we accept the first pull request that comprehensively solves the issue. Issues labeled with or are open for contributions. Please make sure you read . We prioritize contributors following the instructions in our guide. Join us in or if you need help contributing - our community will be happy to assist you.
Hii fixed the typos in both the task (154 & 155) ! ! Hope it clear all the test and get merged

# --description-- <del> Jake is explaining the purpose of his visit to Sarah. He's there to hand over something that Sarah needs, which will permit him access to certain areas. </del> <ins> Jake is explaining the purpose of his visit to Sarah. He's there to hand over something that Sarah needs, which will permit her access to certain areas. </ins> # --fillInTheBlank--

## --text-- <del> What is Sarah referring to with `it` in his question `Is it contactless?` </del> <ins> What is Sarah referring to with `it` in her question `Is it contactless?` </ins> ## --answers--


Question:
Below is syntactically valid code that meets the challenge description. The error message says but we've adopted a policy of accepting any valid syntax that meets the challenge description, so I think we need to check that the target elements received the desired style. Valid code should be accepted. No response All No response
I think I would be fine with only checking the style of the elements here. My only concern would be that - presumably, would we remove the test that says - do we need a hint like that to help guide people, or do we expect them to know that at this point?
I think we should update the requirements and specifically ask for a selector list. I don't think we should allow the duplication of styles in separate selectors. I know the selector list was taught in the CSS curriculum, but maybe we need an example here, I.e. (). Or maybe we do not if they are expected to know about it already. Edit: The test would really just say this instead
That'd also be a fine approach to me. One way or another we need the target solution and the instructions to agree
I am fine with instructions explaining better. Since instructions did not give more context. it was lack of context. it caused someone got misunderstand when they asked a help. and thank you!
An issue with the help wanted or first timers only label is open for contribution. The first comprehensive PR created will be reviewed and merged. We typically do not assign issues to anyone other than long-time contributors. If you would like to contribute and have not read the contributors docs, please do so here: If you have any issues with contributing, be sure to join us on the , or on the Here is the file you will need to work with You will need to update the description to be this You will also need to update the first hint text to be this instead
Hello! I am a new open source contributor and I tried to contribute to issue number which I did but in a weird manual way on GitHub because I am getting error cloning the freeCodeCamp repo after I fork it. I hope anyone can help me with it. Here it was it exactly says: Updating files: 100% (/), done. fatal: unable to checkout working tree warning: Clone succeeded, but checkout failed. You can inspect what was checked out with 'git status' and retry with 'git restore --source=HEAD :/'
Hi ! It is best to post your question on the forum or discord so people can assist you there instead of on this issue. Thanks for understanding

# --description-- <del> Give both your `#controls` and `#stats` elements a `border` of `1px solid #0a0a23`, a `#0a0a23` text color, and `5px` of padding. </del> <ins> Using a selector list (`selector1, selector2`) give both your `#controls` and `#stats` elements a `border` of `1px solid #0a0a23`, a `#0a0a23` text color, and `5px` of `padding`. </ins> # --hints-- <del> You should have a `#controls, #stats` selector. </del> <ins> You should have a `#controls, #stats` selector list. </ins> ```js const selector = new __helpers.CSSHelp(document).getStyle('#controls, #stats');


Question:
The question is worded super horribly. It just isn't written in an easy to understand way. The wording should be something like No response Device: Desktop OS: Windows 10 Browser: Firefox Version: 121.0 First reported in this thread.
A PR has already been made here

Next, you will need to update the playlist in your HTML document to display the songs. <del> Add `songsHTML` to `playlistSongs`, by using the `innerHTML` property. This will insert the `li` element you just created into the `ul` element in the already provided `HTML` file. </del> <ins> Assign `songsHTML` to the `innerHTML` property of the `playlistSongs` element. This will insert the `li` element you just created into the `ul` element in the already provided `HTML` file. </ins> # --hints--


Question:
While doing the exercise I observed an inconsistency in the code test of the spread operator when applied to the array. An error occurs when attempting to spread on the next line within the object literal while the test passes when the spread operation is conducted inline. Also in the exercise statement, it is not being mentioned to spread inline Error Received: Spreading both inline and on next line is correct. So, We should probably make test pass for both the cases We should probably make test pass for spreading both inline or on next line. <img width="774" alt="Screenshot 2024-01-07 at 9 05 09 PM" src=""- Device: [e.g. iPhone 6, Laptop] OS: [e.g. iOS 14, Windows 10, Ubuntu 20.04] Browser: [e.g. Chrome, Safari] Version: [e.g. 22] No response
I am Working on this issue
Sorry, I forgot to mention that I was working on this. Also, I didn't see that you were working on this

Your `userData` object should have a `songs` key set to `[...allSongs]`. ```js <del> assert.match(code, /songss*:s*[...allSongs],?/); </del> <ins> assert.match(code, /songss*:s*[s*...allSongss*],?/); </ins> ``` # --seed--


Question:
All numbers for descriptions should be in backticks. Here is the updated description Here is the file you will need to change Please make sure you read our , we prioritize contributors following the instructions in our guides. Join us in our or our if you need help contributing; our moderators will guide you through this. Sometimes we may get more than one pull request. We typically accept the most quality contribution followed by the one that is made first. Happy contributing. see explanation above see explanation above No response Device: [e.g. iPhone 6, Laptop] OS: [e.g. iOS 14, Windows 10, Ubuntu 20.04] Browser: [e.g. Chrome, Safari] Version: [e.g. 22] No response
id like to pick up this, can you assign it to me pls
We do not assign issues to anyone other than long-time contributors and core team members. This issue is free to pick up for anyone interested in working on it. If you would like to contribute and have not read the contributors docs, please do so here: If you have any issues with contributing, be sure to join us on the , or on the

# --description-- <del> Inside your `while` loop, push a random number between 0 and 10 to the end of the `numbers` array. You can create this random number with `Math.floor(Math.random() * 11)`. </del> <ins> Inside your `while` loop, push a random number between `0` and `10` to the end of the `numbers` array. You can create this random number with `Math.floor(Math.random() * 11)`. </ins> # --hints--


Question:
Lisa's name is not capitalized in the question. The question is: The question should be No response Device: all OS: all Browser: all Version: all No response
Thanks for reporting the issue. It's a nice catch! This issue is open to first-time code contributors to this repository. The file that you should be updating is Please make sure you read our as well as our from a pull request, we prioritize contributors following the instructions in our guides. Join us in our or our if you need help contributing; our moderators will guide you through this. Sometimes we may get more than one pull request. We typically accept the most quality contribution followed by the one that is made first. Happy contributing.

## --text-- <del> What does Bob want to know about lisa? </del> <ins> What does Bob want to know about Lisa? </ins> ## --answers--


Question:
On the current page exist this sentence: But when you listen to the audio, it sounds like Jake explained to Sarah, so I think it should be instead of all over the sentence. n/a No response n/a No response
HI ! Thank you for opening up this issue. I agree that it would make more sense to change the pronouns here since this is talking about what Sarah is going to do. This is has been opened for contribution. The first comprehensive PR created will be reviewed and merged. We typically do not assign issues to anyone other than long-time contributors. If you would like to contribute and have not read the contributors docs, please do so here: If you have any issues with contributing, be sure to join us on the , or on the
Well, I wished I was working on this pull request to fix the typo I reported, but it seems someone took over than me and didn't ask to work on and change it more than it should
We typically do not assign issues. Instead, we accept the first pull request that comprehensively solves the issue. Issues labelled with or are open for contributions. Please make sure you read . We prioritize contributors following the instructions in our guide. Join us in or if you need help contributing - our community will be happy to assist you.
Thanks for the explanation. I just shared my frustration, but I understand someone taking over and opening the PR, and I'm happy about it since sometimes not all who open issues will work on them or have the knowledge to do so. Maybe next time

# --description-- <del> `Get in` means to enter a place, while `get out` means to leave a place. For example, in the dialogue, Jake tells Sarah he can `get in or out` after he hears the door click, meaning he can enter or leave the building. </del> <ins> `Get in` means to enter a place, while `get out` means to leave a place. For example, in the dialogue, Jake tells Sarah she can `get in or out` after she hears the door click, meaning she can enter or leave the building. </ins> # --question--


Question:
Point 7. of instruction says: There is missing underscore near eye in the result text. The correct solution for this test is text: eye is a palindrome (with underscore) Instruction text at Point 7. changed to: ! Device: [e.g. iPhone 6, Laptop] OS: [e.g. iOS 14, Windows 10, Ubuntu 20.04] Browser: [e.g. Chrome, Safari] Version: [e.g. 22] No response
The result looks correct to me because the instructions have this note in the beginning If we remove all special characters from then we would be left with
Look at the instructions for tests 16 and 17. The string includes all of the non-alphanumeric characters. But for test 7 the underscore is left out of the string.
I see it now. I misread that as returning the string without non-alphanumeric characters. In addition to updating the test description the hint text will also need to be updated This is has been opened for contribution. The first comprehensive PR created will be reviewed and merged. We typically do not assign issues to anyone other than long-time contributors. If you would like to contribute and have not read the contributors docs, please do so here: If you have any issues with contributing, be sure to join us on the , or on the User story 7 will need to be updated and the hint text here will need to be updated

1. When you click on the `#check-btn` element without entering a value into the `#text-input` element, an alert should appear with the text `Please input a value` 1. When the `#text-input` element only contains the letter `A` and the `#check-btn` element is clicked, the `#result` element should contain the text `A is a palindrome` 1. When the `#text-input` element contains the text `eye` and the `#check-btn` element is clicked, the `#result` element should contain the text `eye is a palindrome` <del> 1. When the `#text-input` element contains the text `_eye` and the `#check-btn` element is clicked, the `#result` element should contain the text `eye is a palindrome` </del> <ins> 1. When the `#text-input` element contains the text `_eye` and the `#check-btn` element is clicked, the `#result` element should contain the text `_eye is a palindrome` </ins> 1. When the `#text-input` element contains the text `race car` and the `#check-btn` element is clicked, the `#result` element should contain the text `race car is a palindrome` 1. When the `#text-input` element contains the text `not a palindrome` and the `#check-btn` element is clicked, the `#result` element should contain the text `not a palindrome is not a palindrome` 1. When the `#test-input` element contains the text `A man, a plan, a canal. Panama` and the `#check-btn` element is clicked, the `#result` element should contain the text `A man, a plan, a canal. Panama is a palindrome`

assert.strictEqual(resultEl.innerText.trim().replace(/[.,?!]+$/g, '').toLowerCase(), 'eye is a palindrome'); ``` <del> When the `#text-input` element contains the text `_eye` and the `#check-btn` element is clicked, the `#result` element should contain the text `eye is a palindrome`. </del> <ins> When the `#text-input` element contains the text `_eye` and the `#check-btn` element is clicked, the `#result` element should contain the text `_eye is a palindrome`. </ins> ```js const inputEl = document.getElementById('text-input');


Question: The description shows the property should have a value of but the hint shows instead The property should have a value of the string . ! Device: [e.g. iPhone 6, Laptop] OS: [e.g. iOS 14, Windows 10, Ubuntu 20.04] Browser: [e.g. Chrome, Safari] Version: [e.g. 22] No response

assert.equal(allSongs[2].artist, "Quincy Larson"); ``` <del> The third object in your `allSongs` array should have a `duration` property set to the string `4:15`. </del> <ins> The third object in your `allSongs` array should have a `duration` property set to the string `3:51`. </ins> ```js assert.equal(allSongs[2].duration, "3:51");


Question: Describe the bug The following sentence has a typo (LFIO) and "are" is missing before "stored": To Reproduce

# --description-- <del> In computer science, a <dfn>stack</dfn> is a data structure where items stored in an <dfn>LFIO</dfn> (last-in-first-out) manner. If you imagine a stack of books, the last book you add to the stack is the first book you can take off the stack. Or an array where you can only `.push()` and `.pop()` elements. </del> <ins> In computer science, a <dfn>stack</dfn> is a data structure where items are stored in a <dfn>LIFO</dfn> (last-in-first-out) manner. If you imagine a stack of books, the last book you add to the stack is the first book you can take off the stack. Or an array where you can only `.push()` and `.pop()` elements. </ins> The <dfn>call stack</dfn> is a collection of function calls stored in a stack structure. When you call a function, it is added to the top or of the stack, and when it returns, it is removed from the top / end of the stack.


Question:
We are not assigning the function call to anything. Not 100% sure what the expected error in the code is that we are testing for here. It might be its position. Also, if you forget to use the property on the you are passing to you will get this assert message, which is confusing. I don't think this test should care about the argument to , only the function call position (if that is what we are testing for here). tests: As an aside. We have all the elements and event listeners ready to be used, can't the test use them for at least the last three tests? Give the correct assert messages. No response Device: [e.g. iPhone 6, Laptop] OS: [e.g. iOS 14, Windows 10, Ubuntu 20.04] Browser: [e.g. Chrome, Safari] Version: [e.g. 22] No response
We could use this wording for the hint text I believe so. It looks we are testing for and then the next few tests are for the ternary I feel like we still need to check for the actual user message here because if the camper does something like this then they might be missing the point of the challenge. So I think we should update the tests to better check for that. But also, I think the description could be updated to better explain why they need to make these changes. Something like this could work Maybe? It would be nice to cut down on the regex here
"the result of the function call" makes it sound like the element will be assigned the function return value. We are not assigning the result of the function call. We are assigning the expression the ternary condition evaluates to based on what returns. For test 2, if we only care about the position of the function then: Because the regex includes the argument it will cause a false positive where the position can be correct but if you do not use the correct argument you get this assert message. The assert message should be about the function position without making it sound like its return value is being assigned to the element. We check the argument in test 3 and the hint shows the function call with the expected argument.

Back in your event listener, you need to update the text of the `result` element. <del> Use a ternary operator to update the text of the `result` element after the `if` statement. Check the truthiness of calling `isSpam()` on the value of the `messageInput` element. If true, set the text to `Oh no! This looks like a spam message.`. Otherwise, set the text to `This message does not seem to contain any spam.` </del> <ins> After the `if` statement, use a ternary operator to check the truthiness of calling `isSpam()` with `messageInput.value` as the argument. If true, set the `textContent` property on the `result` element to `Oh no! This looks like a spam message.`. Otherwise, set it to `This message does not seem to contain any spam.` </ins> <del> Then set the `messageInput` element's value to an empty string. </del> <ins> Then set the `messageInput` element's `value` property to an empty string. </ins> # --hints--

assert.match(code, /checkMessageButton.addEventListener(s*('|"|`)click1s*,s*(s*)s*=>s*{s*ifs*(s*messageInput.values*===s*('|"|`)2s*)s*{s*alert(s*('|"|`)Please enter a message.3s*);?s*returns*;?s*}s*result.textContents*=s*/) ``` <del> You should assign the `isSpam()` function call to `result.textContent`. </del> <ins> You should call the `isSpam()` function after the assignment operator `=` and before the `?` ternary operator. </ins> ```js <del> assert.match(code, /checkMessageButton.addEventListener(s*('|"|`)click1s*,s*(s*)s*=>s*{s*ifs*(s*messageInput.values*===s*('|"|`)2s*)s*{s*alert(s*('|"|`)Please enter a message.3s*);?s*returns*;?s*}s*result.textContents*=s*isSpam(s*messageInput.values*)/) </del> <ins> assert.match(code, /checkMessageButton.addEventListener(s*('|"|`)click1s*,s*(s*)s*=>s*{s*ifs*(s*messageInput.values*===s*('|"|`)2s*)s*{s*alert(s*('|"|`)Please enter a message.3s*);?s*returns*;?s*}s*result.textContents*=s*isSpam(.*)s*?/) </ins> ``` You should use ternary syntax to check the truthiness of `isSpam(messageInput.value)`.

assert.match(code, /checkMessageButton.addEventListener(s*('|"|`)click1s*,s*(s*)s*=>s*{s*ifs*(s*messageInput.values*===s*('|"|`)2s*)s*{s*alert(s*('|"|`)Please enter a message.3s*);?s*returns*;?s*}s*result.textContents*=s*isSpam(s*messageInput.values*)s*?s*('|"|`)Oh no! This looks like a spam message.4s*:s*('|"|`)This message does not seem to contain any spam.5;?s*/); ``` <del> After your ternary, set the `value` of `messageInput` to an empty string. </del> <ins> After your ternary, set the `value` property on the `messageInput` element to an empty string. </ins> ```js <del> assert.match(code, /checkMessageButton.addEventListener(s*('|"|`)click1s*,s*(s*)s*=>s*{s*ifs*(s*messageInput.values*===s*('|"|`)2s*)s*{s*alert(s*('|"|`)Please enter a message.3s*);?s*returns*;?s*}s*result.textContents*=s*isSpam(s*messageInput.values*)s*?s*('|"|`)Oh no! This looks like a spam message.4s*:s*('|"|`)This message does not seem to contain any spam.5;?s*messageInput.values*=s*('|"|`)6;?s*}/) </del> <ins> assert.match(code, /checkMessageButton.addEventListener(s*('|"|`)click1s*,s*(s*)s*=>s*{s*ifs*(s*messageInput.values*===s*('|"|`)2s*)s*{s*alert(s*('|"|`)Please enter a message.3s*);?s*returns*;?s*}s*result.textContents*=s*isSpam(s*messageInput.values*)s*?s*('|"|`)Oh no! This looks like a spam message.4s*:s*('|"|`)This message does not seem to contain any spam.5s*;?s*messageInput.values*=s*('|"|`)6;?s*}/) </ins> ``` # --seed--


Question:
We got some feedback here about the spreadsheet project step 31 They mentioned that if you try to use an OR operator here then the hint does not tell you what's wrong. I think the easiest fix would be to just update the directions and hint text to explicitly mention the use of the AND operator. This has been opened for contribution. The first comprehensive PR created will be reviewed and merged. We typically do not assign issues to anyone other than long-time contributors. If you would like to contribute and have not read the contributors docs, please do so here: If you have any issues with contributing, be sure to join us on the , or on the Happy coding see explanation above see explanation above No response Device: [e.g. iPhone 6, Laptop] OS: [e.g. iOS 14, Windows 10, Ubuntu 20.04] Browser: [e.g. Chrome, Safari] Version: [e.g. 22] No response
Hey Jessica, may I open a PR to fix this issue? Thank you!
We typically do not assign issues. Instead, we accept the first pull request that comprehensively solves the issue. Issues labelled with or are open for contributions. Please make sure you read . We prioritize contributors following the instructions in our guide. Join us in or if you need help contributing - our community will be happy to assist you.

Spreadsheet software typically uses `=` at the beginning of a cell to indicate a calculation should be used, and spreadsheet functions should be evaluated. <del> Update your `if` condition to also check if the first character of `value` is `=`. </del> <ins> Use the `&&` operator to add a second condition to your `if` statement that also checks if the first character of `value` is `=`. </ins> # --hints-- <del> Your `if` condition should also check if the first character of `value` is `=`. You may use `[0]`, `.startsWith()`, or `.charAt(0)`. </del> <ins> You should use the `&&` operator to add a second condition to your `if` statement that also checks if the first character of `value` is `=`. You may use `[0]`, `.startsWith()`, or `.charAt(0)`. </ins> ```js assert.match(code, /consts+updates*=s*(?s*events*)?s*=>s*{s*consts+elements*=s*event.target;?s*consts+values*=s*element.value.replace(s*/s/gs*,s*('|"|`)1s*);?s*ifs*(s*(!value.includes(s*element.ids*)s*&&s*(?:value[0]s*===s*('|"|`)=3|value.charAt(0)s*===s*('|"|`)=4|value.startsWith(('|"|`)=5))|(?:value[0]s*===s*('|"|`)=6|value.charAt(0)s*===s*('|"|`)=7|value.startsWith(('|"|`)=8))s*||s*!value.includes(s*element.ids*))s*)s*{s*}/);


Question:
The expected solution for step 91 is the following However, the directions don't mention using the method Since the directions mention then a camper could write this and then be surprised to learn that the method is expected. we should update instructions here to let campers know that there is an expected solution. Or update the tests to allow for multiple valid solutions. Open to hearing thoughts see explanation above see explanation above No response Device: [e.g. iPhone 6, Laptop] OS: [e.g. iOS 14, Windows 10, Ubuntu 20.04] Browser: [e.g. Chrome, Safari] Version: [e.g. 22] No response
It would be interesting to see how campers can achieve the same result with both methods since they do the same job fairly, so I'm up for modifying the test to accept multiple valid solutions. As per the solutions it can accept, I looked up a few methods, and stuff like is now said to be 'legacy'... ? So if we do validate the option of modifying the tests, only and would be accepted?
We could use the event. That way it is only the value set on the element we care about. But I can't figure out how to do the assert inside a window load event (we have to wait for the DOM). I see the assert in the browser console but the test just passes anyway. I tried a few different things (try/catch, throwing, , promise delays and try/catch) but I can't get the test to fail properly. There is apparently something about how the tests run I don't understand.
Rather than that approach, we could mock the event. Or some such.
I think we should go with something like this
I am going to go ahead and open this up for contribution. So it looks like instead of updating the directions to expect one solution, we will just update the tests to accept multiple valid solutions. It looks like the conversation in this thread has focused on different approaches to update the tests but I think that we can leave that actual implementation up to the contributor.


Question: Challenge passes with regex that's only partially fulfilling requirements from instructions. Expected solution is: However challenge can be completed with only the part. Challenge should not pass when regex checks just if number is included. No response n/a No response

Your character class should be `0-9`. ```js <del> assert.match(dollarRegex.source, /[0-9]/); </del> <ins> assert.match(dollarRegex.source, /[0-9] dollars/); </ins> ``` Your `dollarRegex` should match `1 dollars`.


Question:
The instructions are really confusing and could be rephrased. ! I don't think what is referred to as a conditional is a what people are going to think of as a conditional. It is just a Boolean expression that is being asked for. No action or assignment is being given depending on truthiness of the expression. It seems like it is looking for an if, switch, ternary or bare conditional, and I believe only ternary or a bare conditional can be placed inside of an array (Not being nested inside of IIFE) which is knowledge a novice probably won't have. The difference, although small, is that a condition takes an action based on the result of a Boolean expression. No conditional action is being taken, so it is just an expression. Might ask for the first element in the array to be a Boolean expression of the sum of the player's position, height and velocity greater than or equal to the platform's position. There are various steps that follow that refer to Boolean expressions as conditionals. The concern is people learning incorrect terminology and getting mixed up in the field.
Yes, you are correct we should update the terminology for steps 78-81 to say boolean expression instead of conditional statement. I have opened this up for contribution.
For each of the steps, make sure to make the change mentioned above in all of the descriptions. Also, go through and check all of the hint text to make sure the correct terminology is used as well
It is bigger than a few steps. I did not track all the steps but kept seeing it through to the end of the course. It happens everywhere that we later do conditional action based on the Booleans stored in arrays. For each array we made, (I think there were 3? player, platform and checkpoints), the instructions use the same wording.
Looks like we have a PR to address the few steps I mentioned earlier. We can review that and merge it in which will close this particular issue. But then I can audit the project to find the other steps and create a second PR to remove the rest
Did a search and replace for the english files and found five more files total where the change needed to be applied. Here is the PR to resolve that.

Inside the callback function, create a new `const` variable called `collisionDetectionRules` and assign it an empty array. <del> Inside that array, add a conditional statement that checks if the player's `y` position plus the player's height is less than or equal to the platform's `y` position. </del> <ins> Inside that array, add a boolean expression that checks if the player's `y` position plus the player's height is less than or equal to the platform's `y` position. </ins> # --hints--

assert.match(code, /consts+collisionDetectionRuless*=s*[s*(?:[^]]*s*)*];?/); ``` <del> You should have a conditional statement that checks if the player's `y` position plus the player's height is less than or equal to the platform's `y` position. </del> <ins> You should have a boolean expression that checks if the player's `y` position plus the player's height is less than or equal to the platform's `y` position. </ins> ```js assert.match(code, /consts+collisionDetectionRuless*=s*[s*player.position.ys++s*player.heights*<=s*platform.position.y,?s*]s*;?/);

# --description-- <del> Add another conditional statement that checks if the sum of the player's `y` position, height, and `y` velocity is greater than or equal to the platform's `y` position. </del> <ins> Add another boolean expression that checks if the sum of the player's `y` position, height, and `y` velocity is greater than or equal to the platform's `y` position. </ins> # --hints-- <del> You should have a conditional statement that checks if the sum of the player's `y` position, height, and `y` velocity is greater than or equal to the platform's `y` position. </del> <ins> You should have a boolean expression that checks if the sum of the player's `y` position, height, and `y` velocity is greater than or equal to the platform's `y` position. </ins> ```js

# --description-- <del> Below that conditional statement, add another conditional statement that checks if the player's `x` position is greater than or equal to the platform's `x` position minus half of the player's width. </del> <ins> Below that boolean expression, add another boolean expression that checks if the player's `x` position is greater than or equal to the platform's `x` position minus half of the player's width. </ins> # --hints-- <del> You should have a conditional statement that checks if the player's `x` position is greater than or equal to the platform's `x` position minus half of the player's width. </del> <ins> You should have a boolean expression that checks if the player's `x` position is greater than or equal to the platform's `x` position minus half of the player's width. </ins> ```js assert.match(code, /consts+collisionDetectionRuless*=s*[s*player.position.ys*+s*player.heights*<=s*platform.position.ys*,s*player.position.ys*+s*player.heights*+s*player.velocity.ys*>=s*platform.position.ys*,s*player.position.xs*>=s*platform.position.xs*-s*player.widths*/s*2,?s*]s*;?/);

# --description-- <del> Add one last conditional statement that checks if the player's `x` position is less than or equal to the sum of the platform's `x` position plus the platform's width minus one-third of the player's width. </del> <ins> Add one last boolean expression that checks if the player's `x` position is less than or equal to the sum of the platform's `x` position plus the platform's width minus one-third of the player's width. </ins> # --hints-- <del> You should have a conditional statement that checks if the player's `x` position is lesser than or equal to the platform's `x` position plus the platform's width minus the player's width divided by `3`. </del> <ins> You should have a boolean expression that checks if the player's `x` position is lesser than or equal to the platform's `x` position plus the platform's width minus the player's width divided by `3`. </ins> ```js assert.match(code, /player.position.xs*<=s*platform.position.xs*+s*platform.widths*-s*player.widths*/s*3,?/)


Question: We recently a lot of updates to this project. So the step numbers in the main branch don't match up with what is currently on production. Here is the correct file you need to look at We had this issue reported on the forum If you try to use the wrong variable name like this then the hint text tells you this: it looks like the third test here will need to be updated You should declare a variable named . see explanation above see explanation above No response Device: [e.g. iPhone 6, Laptop] OS: [e.g. iOS 14, Windows 10, Ubuntu 20.04] Browser: [e.g. Chrome, Safari] Version: [e.g. 22] No response

You should declare a variable named `xp`. ```js <del> assert.match(code, /xp/); </del> <ins> assert.match(code, /lets+xp/); </ins> ``` You should not assign a value to your variable.


Question:
these 2 if statements are functionally equivalent and yet one passes and the other does not pass, took me over a half hour, and made me a very sad panda if(keys.rightKey.pressed && player.position.x < 400) { } if (keys.rightKey.pressed === true && player.position.x < 400) { } the problem is that later the keys are defined with press as false, which makes you assume you need to check if it is true, though you do not, and that is horribly confusing and stupid. if(keys.rightKey.pressed && player.position.x < 400) { } if (keys.rightKey.pressed === true && player.position.x < 400) { } I expected to pass and be done with this in 2 minutes or less. No response Device: [e.g. iPhone 6, Laptop] OS: [e.g. iOS 14, Windows 10, Ubuntu 20.04] Browser: [e.g. Chrome, Safari] Version: [e.g. 22] No response
The === operator checks for strict equality, meaning both the value and the type must match. So, keys.rightKey.pressed must be the boolean true, not just any truthy value. In this case, even if keys.rightKey.pressed is 1, "some string", or {}, the condition will not evaluate as true. It will only be true if keys.rightKey.pressed is exactly true. So the elegant way of writing if condition is first one only because in tests keys.rightKey.pressed can be equal to anything some timestamp or anything at the backend while testing your code
so would just using 2 equals signs work then?
I am just saying that your code is tested in backend and test is written is such a way that it will handle only first if statement otherwise your second if statement is also correct.
The tests are in the frontend code and use a regex Even though would be more common in JS apps, we should allow because a lot campers will still feel more comfortable writing that and the tests should allow for either answer. hope that helps
Thank you, I appreciate it.

You should have an `if` statement that checks if the right key was pressed and the player's `x` position is less than 400. ```js <del> assert.match(animate.toString(), /keys.rightKey.presseds*&&s*player.position.xs*<s*400/); </del> <ins> assert.match(animate.toString(), /keys.rightKey.(pressed|presseds*===s*true)s*&&s*player.position.xs*<s*400/); </ins> ``` # --seed--


Question:
Hello, On the challenge project "Debug a C# Console Application Using Visual Studio Code, the question is: The word is missing between and . N/A I believe the question should be: No response Device: all OS: all Browser: all Version: all No response
Thanks for opening this issue. This looks something that can be fixed by "first time" code contributors to this repository. Here are the files that you should be looking at to work on a fix: List of files: Please make sure you read , we prioritize contributors following the instructions in our guides. Join us in or if you need help contributing, our moderators will guide you through this. Sometimes we may get more than one pull requests. We typically accept the most quality contribution followed by the one that is made first. Happy contributing.

## --text-- <del> Which of the following options can be used set a breakpoint in Visual Studio Code? </del> <ins> Which of the following options can be used to set a breakpoint in Visual Studio Code? </ins> ## --answers--


Question:
Intsruction says: Here's an example that gets the smallest number from an array: The given example, however, has nothing to do with an array; it is an example with the numbers given as input parameters. Two options, I guess either will do: this part . the example itself, by including actual array. No response Device: Laptop OS: Windows 10 Browser: Chrome No response
Let's go with the updating the example and rename the example array here too

You previously learned about the global `Math` object. `Math` has a `.min()` method to get the smallest number from a series of numbers, and the `.max()` method to get the largest number. Here's an example that gets the smallest number from an array: ```js <del> Math.min(1, 9, 11, -3, 0.5); </del> <ins> const numbersArr = [2, 3, 1]; console.log(Math.min(...numbersArr)); // Expected output: 1 </ins> ``` Declare a `getRange` function that takes the same `array` parameter you have been using. Using `Math.min()`, `Math.max()`, and the spread operator, return the difference between the largest and smallest numbers in the list.


Question: Example: When the #search-input element contains the value Pikachu and the #search-button element is clicked, the values in the #pokemon-name, #pokemon-id, #weight, #height, #hp, #attack, #defense, #special-attack, and #special-defense elements should be PIKACHU, or 25, Weight: 60 or 60, Height: 4 or 4, 35, 55, 40, 50, 50, and 90, respectively. here #speed is missing leading to unclear errors same holds true for the Gangar test case this could easily be fixed by changing the wording in: I excpected the test-case to include all elements that should've been return/changed No response Device: [e.g. iPhone 6, Laptop] OS: [e.g. iOS 14, Windows 10, Ubuntu 20.04] Browser: [e.g. Chrome, Safari] Version: [e.g. 22] No response

1. You should have an element with an `id` of `special-defense` 1. You should have an element with an `id` of `speed` 1. When the `#search-input` element contains the value `Red` and the `#search-button` element is clicked, an alert should appear with the text `Pokémon not found` <del> 1. When the `#search-input` element contains the value `Pikachu` and the `#search-button` element is clicked, the values in the `#pokemon-name`, `#pokemon-id`, `#weight`, `#height`, `#hp`, `#attack`, `#defense`, `#special-attack`, and `#special-defense` elements should be `PIKACHU`, `#25` or `25`, `Weight: 60` or `60`, `Height: 4` or `4`, `35`, `55`, `40`, `50`, `50`, and `90`, respectively </del> <ins> 1. When the `#search-input` element contains the value `Pikachu` and the `#search-button` element is clicked, the values in the `#pokemon-name`, `#pokemon-id`, `#weight`, `#height`, `#hp`, `#attack`, `#defense`, `#special-attack`, `#special-defense`, and `#speed` elements should be `PIKACHU`, `#25` or `25`, `Weight: 60` or `60`, `Height: 4` or `4`, `35`, `55`, `40`, `50`, `50`, and `90`, respectively </ins> 1. When the `#search-input` element contains the value `Pikachu` and the `#search-button` element is clicked, you should add an `img` element with the `id` of `sprite` and the `src` set to the Pokémon's `front_default` sprite to the page 1. When the `#search-input` element contains the value `Pikachu` and the `#search-button` element is clicked, the `#types` element should contain a single inner element with the value `ELECTRIC`. The `#types` element content should be cleared between searches <del> 1. When the `#search-input` element contains the value `94` and the `#search-button` element is clicked, the values in the `#pokemon-name`, `#pokemon-id`, `#weight`, `#height`, `#hp`, `#attack`, `#defense`, `#special-attack`, and `#special-defense` elements should be `GENGAR`, `#94` or `94`, `Weight: 405` or `405`, `Height: 15` or `15`, `60`, `65`, `60`, `130`, `75`, and `110`, respectively </del> <ins> 1. When the `#search-input` element contains the value `94` and the `#search-button` element is clicked, the values in the `#pokemon-name`, `#pokemon-id`, `#weight`, `#height`, `#hp`, `#attack`, `#defense`, `#special-attack`, `#special-defense`, and `#speed`elements should be `GENGAR`, `#94` or `94`, `Weight: 405` or `405`, `Height: 15` or `15`, `60`, `65`, `60`, `130`, `75`, and `110`, respectively </ins> 1. When the `#search-input` element contains the value `94` and the `#search-button` element is clicked, you should add an `img` element with the `id` of `sprite` and the `src` set to the Pokémon's `front_default` sprite to the page 1. When the `#search-input` element contains the value `94` and the `#search-button` element is clicked, the `#types` element should contain two inner elements with the text values `GHOST` and `POISON`, respectively. The `#types` element content should be cleared between searches

}; ``` <del> When the `#search-input` element contains the value `Pikachu` and the `#search-button` element is clicked, the values in the `#pokemon-name`, `#pokemon-id`, `#weight`, `#height`, `#hp`, `#attack`, `#defense`, `#special-attack`, and `#special-defense` elements should be `PIKACHU`, `#25` or `25`, `Weight: 60` or `60`, `Height: 4` or `4`, `35`, `55`, `40`, `50`, `50`, and `90`, respectively. </del> <ins> When the `#search-input` element contains the value `Pikachu` and the `#search-button` element is clicked, the values in the `#pokemon-name`, `#pokemon-id`, `#weight`, `#height`, `#hp`, `#attack`, `#defense`, `#special-attack`, `#special-defense`, and `#speed` elements should be `PIKACHU`, `#25` or `25`, `Weight: 60` or `60`, `Height: 4` or `4`, `35`, `55`, `40`, `50`, `50`, and `90`, respectively. </ins> ```js async () => {

}; ``` <del> When the `#search-input` element contains the value `94` and the `#search-button` element is clicked, the values in the `#pokemon-name`, `#pokemon-id`, `#weight`, `#height`, `#hp`, `#attack`, `#defense`, `#special-attack`, and `#special-defense` elements should be `GENGAR`, `#94` or `94`, `Weight: 405` or `405`, `Height: 15` or `15`, `60`, `65`, `60`, `130`, `75`, and `110`, respectively. </del> <ins> When the `#search-input` element contains the value `94` and the `#search-button` element is clicked, the values in the `#pokemon-name`, `#pokemon-id`, `#weight`, `#height`, `#hp`, `#attack`, `#defense`, `#special-attack`, `#special-defense`, and `#speed` elements should be `GENGAR`, `#94` or `94`, `Weight: 405` or `405`, `Height: 15` or `15`, `60`, `65`, `60`, `130`, `75`, and `110`, respectively. </ins> ```js async () => {


Question:
Stray code is populated in the boilerplate for the Cash Register project User should have blank project to start No response All No response
I believe this was actually intentional as to show campers the correct data structure for the cid array. thoughts?
Hmm, its in there without an explanatory comment and has confused at least one user.
It looks like the boilerplate code is possibly referenced here but being more explicit would be better. we could rework this section here price: the price of the item as a floating point number. cash: the amount of cash provided by the customer for the item, which is provided via an input element on the page. cid: cash-in-drawer, a 2D array listing available currency in the cash drawer.
I think the proposed version looks good.

Here you'll build a cash register app that will return change to the customer based on the price of the item, the amount of cash provided by the customer, and the amount of cash in the cash drawer. You'll also need to show different messages to the user in different scenarios, such as when the customer provides too little cash or when the cash drawer doesn't have enough to issue the correct change. <del> There are a few variables you'll need to use in your code: </del> <ins> In the `script.js` file, you have been provided with the `price` and `cid` variables. The `price` variable is the price of the item, and the `cid` variable is the cash-in-drawer, which is a 2D array listing the available currency in the cash drawer. </ins> <del> - `price`: the price of the item as a floating point number. - `cash`: the amount of cash provided by the customer for the item, which is provided via an `input` element on the page. - `cid`: cash-in-drawer, a 2D array listing available currency in the cash drawer. </del> <ins> The other variable you will need add is the `cash` variable, which is the amount of cash provided by the customer for the item, which is provided via an `input` element on the page. </ins> If you'd like to test your application with different values for `price` and `cid`, make sure to declare them with the `let` keyword so they can be reassigned by our tests.


Question:
The function used in the code, named : Instructions mention function: "Because returns a function, your function ultimately returns an array of function references..." Instruction should mention function, not function. No response Device: Laptop OS: Windows 10 Browser: Chrome No response
Thanks for opening this issue. This looks something that can be fixed by "first time" code contributors to this repository. Here are the files that you should be looking at to work on a fix: List of files: Please make sure you read , we prioritize contributors following the instructions in our guides. Join us in or if you need help contributing, our moderators will guide you through this. Sometimes we may get more than one pull requests. We typically accept the most quality contribution followed by the one that is made first. Happy contributing.
can you assign me this issue?
We typically do not assign issues. Instead, we accept the first pull request that comprehensively solves the issue. Issues labelled with or are open for contributions. Please make sure you read . We prioritize contributors following the instructions in our guide. Join us in or if you need help contributing - our community will be happy to assist you.

# --description-- <del> Because `elemValue` returns a function, your `addChars` function ultimately returns an array of function references. You want the `.map()` method to run the inner function of your `elemValue` function, which means you need to call `elemValue` instead of reference it. Pass `num` as the argument to your `elemValue` function. </del> <ins> Because `elemValue` returns a function, your `addCharacters` function ultimately returns an array of function references. You want the `.map()` method to run the inner function of your `elemValue` function, which means you need to call `elemValue` instead of reference it. Pass `num` as the argument to your `elemValue` function. </ins> <!-- TODO: Explain further? -->


Question:
A wrong solution is accepted at coding-interview-prep/data-structures/remove-an-element-from-a-max-heap challenge The test case for The remove method should remove the greatest element from the max heap while maintaining the max heap property should not pass. The next example shows that, the function does not maintain the max heap properly: Device: [Laptop] OS: [ Windows 10] Browser: [Chrome] Version: [121.0.6167.86]
OK, I have make it.

```js function isHeap(arr, i, n) { <del> if (i >= (n - 1) / 2) { return true; } if ( arr[i] >= arr[2 * i + 1] && arr[i] >= arr[2 * i + 2] && isHeap(arr, 2 * i + 1, n) && isHeap(arr, 2 * i + 2, n) ) { return true; } return false; </del> <ins> if( arr[i] < arr[2 * i + 1] || arr[i] < arr[2 * i + 2] ){ return false; } if (i > (n - 1) / 2) { return true; } if (isHeap(arr, 2 * i + 1, n) && isHeap(arr, 2 * i + 2, n)) { return true; } return false; </ins> } assert( (function () { let test = false; if (typeof MaxHeap !== 'undefined') { test = new MaxHeap(); } else { return false; } <del> let max = Infinity; const [result, vals] = [[], [2, 15, 3, 7, 12, 7, 10, 90]]; vals.forEach((val) => test.insert(val)); for (let i = 0; i < vals.length; i++) { const curHeap = test.print(); const arr = curHeap[0] === null ? curHeap.slice(1) : curHeap; if (!isHeap(arr, 0, arr.length - 1)) { return false; </del> <ins> let max = Infinity; const [result, vals] = [[], [9, 3, 5, 2, 15, 3, 7, 12, 7, 10, 90]]; vals.forEach((val) => test.insert(val)); for (let i = 0; i < vals.length; i++) { const curHeap = test.print(); const arr = curHeap[0] === null ? curHeap.slice(1) : curHeap; if (!isHeap(arr, 0, arr.length - 1)) { return false; } const removed = test.remove(); if (!vals.includes(removed)) return false; if (removed > max) return false max = removed; result.push(removed); </ins> } <del> const removed = test.remove(); if (!vals.includes(removed)) return false; if (removed > max) return false max = removed; result.push(removed); } for (let i = 0; i < vals.length; i++) { if (!result.includes(vals[i])) { return false; } } return true </del> <ins> for (let i = 0; i < vals.length; i++) { if (!result.includes(vals[i])) { return false; } } return true; </ins> })() ); ```


Question: I noticed a typo in the instructions for Step 11 for The typo is in the line I think the word should be I know it's a bit pedantic, but this is so... N/A N/A No response Device: HP Laptop OS: Windows 10 Browser:Firefox Version: 122.0 No response

lambda x: expr ``` <del> In the example above, `x` is a parameter to be use in the expression `expr`. Create a `test` variable and assign it a lambda function that takes an `x` parameter and returns `x * 2`. </del> <ins> In the example above, `x` is a parameter to be used in the expression `expr`. Create a `test` variable and assign it a lambda function that takes an `x` parameter and returns `x * 2`. </ins> # --hints--


Question:
We still have a lot of confusion on the forum about step 41 I think adding a code example of what they need to do will help. Here is my proposed update to the step. js button.onclick = myFunction; ` see explanation above see explanation above No response Device: [e.g. iPhone 6, Laptop] OS: [e.g. iOS 14, Windows 10, Ubuntu 20.04] Browser: [e.g. Chrome, Safari] Version: [e.g. 22] No response
Just a note - that will be step 40 currently
This has been opened for contribution. The first comprehensive PR created will be reviewed and merged. We typically do not assign issues to anyone other than long-time contributors. If you would like to contribute and have not read the contributors docs, please do so here: If you have any issues with contributing, be sure to join us on the , or on the Happy coding

`button1` represents your first `button` element. These elements have a special property called `onclick`, which you can use to determine what happens when someone clicks that button. <del> You can access properties in JavaScript a couple of different ways. The first is with <dfn>dot notation</dfn>. Accessing the `onclick` property of a button would look like: </del> <ins> You can access properties in JavaScript a couple of different ways. The first is with <dfn>dot notation</dfn>. Here is an example of using dot notation to set the `onclick` property of a button to a function reference. </ins> ```js <del> button.onclick </del> <ins> button.onclick = myFunction; </ins> ``` <ins> In this example, `button` is the button element, and `myFunction` is a reference to a function. When the button is clicked, `myFunction` will be called. </ins> Use dot notation to set the `onclick` property of your `button1` to the function reference of `goStore`. Note that `button1` is already declared, so you don't need to use `let` or `const`. # --hints--


Question:
There is a lot of confusion on the forum about step 117 in the rpg game The goal of this step is to teach campers how to work with the style property. Updating the description and code example will clear up what is meant to happen in this step. js const paragraph = document.querySelector('p'); = 'block'; ` see explanation above see explanation above No response Device: [e.g. iPhone 6, Laptop] OS: [e.g. iOS 14, Windows 10, Ubuntu 20.04] Browser: [e.g. Chrome, Safari] Version: [e.g. 22] No response
This has been opened for contribution. The first comprehensive PR created will be reviewed and merged. We typically do not assign issues to anyone other than long-time contributors. If you would like to contribute and have not read the contributors docs, please do so here: If you have any issues with contributing, be sure to join us on the , or on the Happy coding

# --description-- <del> The HTML element that shows the monster's stats has been hidden with CSS. Display the `monsterStats` element by updating the `display` property of the `style` property to `block`. For example, updating the `first` property of the `name` property of `user` would look like: </del> <ins> By default, the HTML element that shows the monster's stats has been hidden with CSS. When the player clicks the "Fight dragon" button, the monster's stats should be displayed. You can accomplish this by using the <dfn>style</dfn> and <dfn>display</dfn> properties on the `monsterStats` element. The `style` property is used to access the inline style of an element and the `display` property is used to set the visibility of an element. Here is an example of how to update the display for a paragraph element: </ins> ```js <del> user.name.first = "Naomi"; </del> <ins> const paragraph = document.querySelector('p'); paragraph.style.display = 'block'; </ins> ``` <ins> Display the `monsterStats` element by updating the `display` property of the `style` property to `block`. </ins> # --hints-- You should use dot notation to access the `style` property of `monsterStats`.