diff --git a/bonfireMDNlinks.js b/bonfireMDNlinks.js
index 9a9ea86741..bedd51b2db 100644
--- a/bonfireMDNlinks.js
+++ b/bonfireMDNlinks.js
@@ -12,6 +12,7 @@ var links =
"Currying": "https://leanpub.com/javascript-allonge/read#pabc",
"Smallest Common Multiple": "https://www.mathsisfun.com/least-common-multiple.html",
"Permutations": "https://www.mathsisfun.com/combinatorics/combinations-permutations.html",
+ "HTML Entities": "http://dev.w3.org/html5/html-author/charref",
// ========= GLOBAL OBJECTS
"Global Array Object" : "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array",
diff --git a/challenges/basic-bonfires.json b/challenges/basic-bonfires.json
index 6c8952a980..ae9b0b571a 100644
--- a/challenges/basic-bonfires.json
+++ b/challenges/basic-bonfires.json
@@ -1097,7 +1097,7 @@
"dashedName": "bonfire-convert-html-entities",
"difficulty": "2.07",
"description": [
- "Convert the characters \"&\", \"<\", \">\", '\"', and \"'\", in a string to their corresponding HTML entities.",
+ "Convert the characters \"&\", \"<\", \">\", '\"' (double quote), and \"'\" (apostrophe), in a string to their corresponding HTML entities.",
"Remember to use RSAP if you get stuck. Try to pair program. Write your own code."
],
"challengeSeed": [
@@ -1114,10 +1114,12 @@
"assert.strictEqual(convert('Sixty > twelve'), 'Sixty > twelve', 'should escape characters');",
"assert.strictEqual(convert('Stuff in \"quotation marks\"'), 'Stuff in "quotation marks"', 'should escape characters');",
"assert.strictEqual(convert(\"Shindler's List\"), 'Shindler's List', 'should escape characters');",
+ "assert.strictEqual(convert('<>'), '<>', 'should escape characters');",
"assert.strictEqual(convert('abc'), 'abc', 'should handle strings with nothing to escape');"
],
"MDNlinks": [
- "RegExp"
+ "RegExp",
+ "HTML Entities"
],
"challengeType": 5,
"nameCn": "",
diff --git a/challenges/basic-html5-and-css.json b/challenges/basic-html5-and-css.json
index 52bd6f49b2..fb8c4aa952 100644
--- a/challenges/basic-html5-and-css.json
+++ b/challenges/basic-html5-and-css.json
@@ -1098,7 +1098,8 @@
"In addition to pixels, you can also specify a border-radius
using a percentage."
],
"tests": [
- "assert(parseInt($('img').css('border-top-left-radius')) > 48, 'Your image should have a border radius of 50 percent, making it perfectly circular.')"
+ "assert(parseInt($('img').css('border-top-left-radius')) > 48, 'Your image should have a border radius of 50 percent, making it perfectly circular.')",
+ "assert(editor.match(/50%/g), 'Be sure to use a percentage instead of a pixel value.')"
],
"challengeSeed": [
"",
@@ -1756,7 +1757,7 @@
],
"tests": [
"assert($('input[placeholder]').length > 0, 'Add a placeholder
attribute text input
element.')",
- "assert($('input').attr('placeholder').match(/cat\\s+photo\\s+URL/gi), 'Set the value of your placeholder attribute to \"cat photo URL\".')"
+ "assert($('input') && $('input').attr('placeholder') && $('input').attr('placeholder').match(/cat\\s+photo\\s+URL/gi), 'Set the value of your placeholder attribute to \"cat photo URL\".')"
],
"challengeSeed": [
"",
@@ -1835,7 +1836,7 @@
"For example: <form action=\"/url-where-you-want-to-submit-form-data\"></form>
."
],
"tests": [
- "assert($('form').length > 0, 'Wrap your text input element within a form
element.')",
+ "assert($('form') && $('form').children('input') && $('form').children('input').length > 0, 'Wrap your text input element within a form
element.')",
"assert($('form').attr('action'), 'Your form
element should have an action
attribute.')",
"assert(editor.match(/<\\/form>/g) && editor.match(/