diff --git a/css/webform.admin.css b/css/webform.admin.css
index 63004be9..43de73c7 100644
--- a/css/webform.admin.css
+++ b/css/webform.admin.css
@@ -4,15 +4,14 @@
  */
 
 /**
- * Hide throbber which causes layout issue in dropbutton
+ * General.
  */
 .dropbutton-multiple .ajax-progress-throbber {
   display: none;
 }
 
 /**
- * Webform setting button displays a gear icon.
- * @see /admin/structure/webform/manage/contact/results/table
+ * Buttons
  */
 .button.button-webform-setting {
   margin: 0 0 1em 0;
@@ -24,17 +23,22 @@
 }
 
 /**
- * Add light gray background to Add-on details widget.
- * @see /admin/structure/webform/addons
+ * Add-ons
  */
 .webform-addons details {
   background-color: #f8f8f8;
 }
 
 /**
- * Filter webform and submissions.
- * @see /admin/structure/webform
- * @see /admin/structure/webform/templates
+ * Handler.
+ */
+.webform-handler__new,
+.webform-handler__new div {
+  display: inline;
+}
+
+/**
+ * Filter webform.
  */
 .webform-filter-form .form-submit {
   margin-left: 0;
@@ -54,9 +58,6 @@
 
 /**
  * Results table.
- * @see /admin/structure/webform/results/manage
- * @see /admin/structure/webform/manage/contact/results/submissions
- * @see /admin/structure/webform/manage/contact/results/table
  */
 .webform-results__table th,
 .webform-results__table td {
@@ -66,7 +67,6 @@
   text-overflow: ellipsis;
 }
 
-/* Make sure 'Operations' is never cut-off */
 .webform-results__table td:last-child {
   overflow: visible;
   max-width: inherit;
@@ -79,13 +79,14 @@ td.webform-results__icon {
   padding-right: 0;
 }
 
-/* Hide throbber, which breaks icon alignment */
-.webform-results__icon .ajax-progress-throbber,
+.webform-results__icon .ajax-progress-throbber {
+  display: none;
+}
+
 a.webform-results__custom + .ajax-progress-throbber {
   display: none;
 }
 
-/* Entire row is clickable. @see Drupal.behaviors.webformTableRowHref */
 .webform-results__table tbody tr {
   cursor: pointer;
   cursor: hand;
@@ -96,7 +97,7 @@ a.webform-results__custom + .ajax-progress-throbber {
  */
 .webform-results__custom .tabledrag-changed-warning,
 .webform-results__custom .tabledrag-changed /* Hide table drag warnings. */ {
-  display: none !important; /* Must use !important because .tabledrag-changed 'display' is set via JavaScript */
+  display: none !important;
 }
 
 /**
@@ -156,8 +157,7 @@ a:focus .webform-icon-notes--off {
 }
 
 /**
- * Submission view table.
- * @see /admin/structure/webform/manage/{webform_id}/submission/{webform_submission_id}/table
+ * Submission view table
  */
 .webform-submission__table th {
   width: 33%;
diff --git a/css/webform.admin.translation.css b/css/webform.admin.translation.css
index 78dfeece..4872edc7 100644
--- a/css/webform.admin.translation.css
+++ b/css/webform.admin.translation.css
@@ -3,10 +3,6 @@
  * Translation styles.
  */
 
-/**
- * Remove margin in left column in translate tab to ensure form items line up.
- * @see /admin/structure/webform/manage/contact/translate/es/add
- */
 .webform-translation-source .form-item {
   margin: 0;
 }
diff --git a/css/webform.confirmation.css b/css/webform.confirmation.css
index 4895f346..9bc7deda 100644
--- a/css/webform.confirmation.css
+++ b/css/webform.confirmation.css
@@ -1,8 +1,6 @@
 /**
  * @file
  * Confirmation styles.
- *
- * @see /webform/contact/confirmation
  */
 
 .webform-confirmation__message,
diff --git a/css/webform.element.codemirror.css b/css/webform.element.codemirror.css
index e75223c3..be90ffa5 100644
--- a/css/webform.element.codemirror.css
+++ b/css/webform.element.codemirror.css
@@ -1,11 +1,8 @@
 /**
  * @file
  * CodeMirror styles.
- *
- * @see /webform/test_element_codemirror/test
  */
 
-/* Clean up CodeMirror editor */
 form .CodeMirror {
   border: 1px solid #ccc;
   font-size: 13px;
@@ -17,7 +14,6 @@ form .CodeMirror-scroll {
   overflow-x: auto;
 }
 
-/* Clean up CodeMirror viewer */
 pre.webform-codemirror-runmode {
   border: 1px solid #ccc;
   font-size: 13px;
diff --git a/css/webform.element.color.css b/css/webform.element.color.css
index 3c6819bd..9408883d 100644
--- a/css/webform.element.color.css
+++ b/css/webform.element.color.css
@@ -3,7 +3,6 @@
  * Element color styles
  *
  * @see \Drupal\webform\Plugin\WebformElement\Color
- * @see webform-element-color-value-swatch.html.twig
  * @see http://stackoverflow.com/questions/11167281/webkit-css-to-control-the-box-around-the-color-in-an-elementtype-color
  */
 
diff --git a/css/webform.element.composite.css b/css/webform.element.composite.css
index 50083c57..776143c7 100644
--- a/css/webform.element.composite.css
+++ b/css/webform.element.composite.css
@@ -1,11 +1,8 @@
 /**
  * @file
  * Composite element styles
- *
- * @see /webform/example_elements_composite
  */
 
-/* Remove extra margin are composite element which already contain form elements with margins */
 fieldset.form-composite {
   margin: 0;
 }
diff --git a/css/webform.element.details.toggle.css b/css/webform.element.details.toggle.css
index f980233e..16680d7a 100644
--- a/css/webform.element.details.toggle.css
+++ b/css/webform.element.details.toggle.css
@@ -1,8 +1,6 @@
 /**
  * @file
  * Element details toggle all styles.
- *
- * @see /webform/test_form_details_toggle
  */
 
 .webform-details-toggle-state-wrapper {
diff --git a/css/webform.element.flexbox.css b/css/webform.element.flexbox.css
index d80266d3..20e53834 100644
--- a/css/webform.element.flexbox.css
+++ b/css/webform.element.flexbox.css
@@ -1,9 +1,6 @@
 /**
  * @file
  * Flexbox styles.
- *
- * @see /webform/example_layout_flexbox
- * @see /webform/test_element_flexbox_flex
  */
 
 @media (min-width: 768px) {
diff --git a/css/webform.element.html_editor.css b/css/webform.element.html_editor.css
new file mode 100644
index 00000000..a78158ff
--- /dev/null
+++ b/css/webform.element.html_editor.css
@@ -0,0 +1,9 @@
+/**
+ * @file
+ * HTML editor element styles.
+ */
+
+.cke_dialog_body {
+  border-radius: 4px !important;
+  background: #fff !important;
+}
diff --git a/css/webform.element.image_file.css b/css/webform.element.image_file.css
index 99bd1abb..5da0f96a 100644
--- a/css/webform.element.image_file.css
+++ b/css/webform.element.image_file.css
@@ -1,8 +1,6 @@
 /**
  * @file
- * Image file styles.
- *
- * @see /webform/test_element_media_file
+ * image file styles.
  */
 
 img.webform-image-file {
diff --git a/css/webform.element.likert.css b/css/webform.element.likert.css
index edb941b1..ee284f3e 100644
--- a/css/webform.element.likert.css
+++ b/css/webform.element.likert.css
@@ -1,12 +1,10 @@
 /**
  * @file
  * Likert element styles.
- *
- * @see /webform/test_element_likert
  */
 
 /**
- * Answer column widths.
+ * Answer widths
  */
 [data-likert-answers-count="2"] th {
   width: 30%;
@@ -79,19 +77,13 @@
 
   .form-type-webform-likert td {
     display: block;
+    width: 100% !important;
     border: 0;
     background: transparent;
     padding: 0;
     text-align: inherit;
   }
 
-  .webform-likert-table[data-likert-answers-count] th,
-  .webform-likert-table[data-likert-answers-count] th:first-child,
-  .webform-likert-table td,
-  .webform-likert-table td:first-child {
-    width: 100%;
-  }
-
   .form-type-webform-likert td label {
     display: inline;
   }
diff --git a/css/webform.element.location.css b/css/webform.element.location.css
index a56011e2..85713a4d 100644
--- a/css/webform.element.location.css
+++ b/css/webform.element.location.css
@@ -1,8 +1,6 @@
 /**
  * @file
  * Location element styles.
- *
- * @see /webform/test_element_location
  */
 
 /**
diff --git a/css/webform.element.message.css b/css/webform.element.message.css
index fc8c6873..65f86ce2 100644
--- a/css/webform.element.message.css
+++ b/css/webform.element.message.css
@@ -1,13 +1,8 @@
 /**
  * @file
  * Messages element styles.
- *
- * @see /webform/test_element_message
  */
 
-/**
- * Add styles to default (info) message,
- */
 .messages {
   box-shadow: -8px 0 0 #3b3b3b; /* LTR */
 }
@@ -30,15 +25,12 @@
 }
 
 /**
- * Webform message close container.
+ * Message close.
  */
 .webform-message--close .messages {
   position: relative;
 }
 
-/**
- * Webform message close link.
- */
 .webform-message--close .webform-message__link {
   display: none;
 }
diff --git a/css/webform.element.multiple.css b/css/webform.element.multiple.css
index b0cabf2c..9d432774 100644
--- a/css/webform.element.multiple.css
+++ b/css/webform.element.multiple.css
@@ -1,8 +1,6 @@
 /**
  * @file
  * Multiple element styles.
- *
- * @see /webform/test_element_multiple
  */
 
 .webform-multiple-table td {
diff --git a/css/webform.element.options.css b/css/webform.element.options.css
index 3c678982..8c060d06 100644
--- a/css/webform.element.options.css
+++ b/css/webform.element.options.css
@@ -1,8 +1,6 @@
 /**
  * @file
  * Element options display styles.
- *
- * @see /webform/example_layout_basic
  */
 
 .webform-options-display-side-by-side > div {
diff --git a/css/webform.element.other.css b/css/webform.element.other.css
index 6ff186c6..e7027f21 100644
--- a/css/webform.element.other.css
+++ b/css/webform.element.other.css
@@ -1,10 +1,9 @@
 /**
  * @file
  * Other element styles.
- *
- * @see /webform/test_element_other
  */
 
+
 html.js .webform-select-other .webform-select-other-input,
 html.js .webform-checkboxes-other .webform-checkboxes-other-input,
 html.js .webform-radios-other .webform-radios-other-input,
diff --git a/css/webform.element.range.css b/css/webform.element.range.css
index 61197440..216d7b7e 100644
--- a/css/webform.element.range.css
+++ b/css/webform.element.range.css
@@ -2,7 +2,7 @@
  * @file
  * Element range styles.
  *
- * @see /webform/example_elements#edit-range
+ * @see \Drupal\webform\Plugin\WebformElement\Range
  * @see http://thenewcode.com/754/input-Antipode-The-HTML5-output-Element
  */
 
diff --git a/css/webform.element.rating.css b/css/webform.element.rating.css
index 38a4f72f..63e91007 100644
--- a/css/webform.element.rating.css
+++ b/css/webform.element.rating.css
@@ -1,8 +1,6 @@
 /**
  * @file
  * Rating element styles.
- *
- * @see /webform/example_elements
  */
 
 html.js .form-webform-rating {
diff --git a/css/webform.element.signature.css b/css/webform.element.signature.css
index 00ca88ae..9846c175 100644
--- a/css/webform.element.signature.css
+++ b/css/webform.element.signature.css
@@ -2,7 +2,6 @@
  * @file
  * Signature element styles.
  *
- * @see /webform/example_elements
  * @see https://css-tricks.com/snippets/sass/maintain-aspect-ratio-mixin/
  */
 
@@ -28,7 +27,6 @@
   cursor: crosshair;
 }
 
-/* Position 'Reset' button in right hand corner of the canvas */
 .webform-signature-pad .button {
   z-index: 100;
   position: absolute;
@@ -36,10 +34,9 @@
   right: 2px;
 }
 
-/* Add border around signature image */
 .webform-signature-pad-image {
   display: block;
   width: 100%;
-  max-width: 600px; /* Max width is used to prevent signature pad from getting too wide and tall */
+  max-width: 600px;
   border: 1px solid #ccc;
 }
diff --git a/css/webform.element.states.css b/css/webform.element.states.css
index 405dbda4..06fd4866 100644
--- a/css/webform.element.states.css
+++ b/css/webform.element.states.css
@@ -1,8 +1,6 @@
 /**
  * @file
  * States element styles.
- *
- * @see /webform/test_element_states
  */
 
 .webform-states-table td {
@@ -37,7 +35,8 @@
 .webform-states-table td:last-child {
   padding: 0 2px;
   vertical-align: middle;
-  text-align: center;
+  text-align: center !important;
+  width: 60px !important;
 }
 
 .webform-states-table td:last-child input {
@@ -67,5 +66,5 @@
  */
 .webform-states-table .tabledrag-changed-warning,
 .webform-states-table .tabledrag-changed {
-  display: none !important; /* Must use !important because .tabledrag-changed 'display' is set via JavaScript */
+  display: none !important;
 }
diff --git a/css/webform.element.tableselect.css b/css/webform.element.tableselect.css
index aeda6cc6..d74ae47e 100644
--- a/css/webform.element.tableselect.css
+++ b/css/webform.element.tableselect.css
@@ -1,11 +1,8 @@
 /**
  * @file
  * Table select element styles.
- *
- * @see /webform/test_element_table
  */
 
-/* Make the first column containing a checkbox/radio as small as possible. */
 .tableselect th:first-child,
 .tableselect td:first-child {
   width: 1px;
diff --git a/css/webform.element.tableselect_sort.css b/css/webform.element.tableselect_sort.css
index 7f803f5a..98b3b8d2 100644
--- a/css/webform.element.tableselect_sort.css
+++ b/css/webform.element.tableselect_sort.css
@@ -1,8 +1,6 @@
 /**
  * @file
  * Table select sort element styles.
- *
- * @see /webform/test_element_table
  */
 
 .tableselect-sort th:first-child,
diff --git a/css/webform.element.toggle.css b/css/webform.element.toggle.css
index a29a768c..09288fca 100644
--- a/css/webform.element.toggle.css
+++ b/css/webform.element.toggle.css
@@ -1,8 +1,6 @@
 /**
  * @file
  * Toggle element styles.
- *
- * @see /webform/example_elements
  */
 
 html.js .form-type-webform-toggle .form-checkbox {
diff --git a/css/webform.element.video_file.css b/css/webform.element.video_file.css
index 3c59d6b5..9b5ffefa 100644
--- a/css/webform.element.video_file.css
+++ b/css/webform.element.video_file.css
@@ -1,8 +1,6 @@
 /**
  * @file
  * Video file styles.
- *
- * @see /webform/test_element_media_file
  */
 
 .webform-video-file {
diff --git a/css/webform.form.css b/css/webform.form.css
index f2600a45..ad11d42a 100644
--- a/css/webform.form.css
+++ b/css/webform.form.css
@@ -11,14 +11,6 @@
 }
 
 /**
- * Issue #2731991: Setting required on radios marks all options required.
- */
-.form-checkboxes .form-required:after,
-.form-radios .form-required:after {
-  display: none;
-}
-
-/**
  * Element inline
  */
 .webform-element--title-inline label {
@@ -34,7 +26,7 @@
 }
 
 /**
- * Readonly inputs.
+ * Readonly
  */
 .webform-readonly {
   background-color: #f0f0f0;
diff --git a/css/webform.help.css b/css/webform.help.css
index 5c9e9533..e7b614f0 100644
--- a/css/webform.help.css
+++ b/css/webform.help.css
@@ -1,36 +1,21 @@
 /**
  * @file
  * Help styles.
- *
- * @see /admin/help/webform
- * @see /admin/help/webform/introduction
  */
 
-/**
- * Help block.
- */
+.webform-help-accordion dt {
+  font-weight: bold;
+}
+
 .block-help {
   margin: 1em 0;
 }
 
-/**
- * Help play button.
- */
 .button.button-webform-play:before {
   content: '► ';
   font-size: .8em;
 }
 
-/**
- * Help accordion.
- */
-.webform-help-accordion dt {
-  font-weight: bold;
-}
-
-/**
- * Help video.
- */
 .webform-help-video-youtube {
   margin: 1.5em 0;
   max-width: 1024px;
diff --git a/css/webform.navigation.css b/css/webform.navigation.css
index 3fba8a6b..c7341dce 100644
--- a/css/webform.navigation.css
+++ b/css/webform.navigation.css
@@ -1,8 +1,6 @@
 /**
  * @file
  * Navigation styles.
- *
- * @see /admin/structure/webform/manage/{webform_id}/submission/{webform_submission_id}
  */
 
 /**
diff --git a/css/webform.progress.bar.css b/css/webform.progress.bar.css
index 524013bb..b6e899b7 100644
--- a/css/webform.progress.bar.css
+++ b/css/webform.progress.bar.css
@@ -1,9 +1,6 @@
 /**
  * @file
  * Wizard progress bar styles.
- *
- * @see /webform/example_wizard
- * @see /webform/test_form_wizard_advanced
  */
 
 /**
diff --git a/css/webform.progress.css b/css/webform.progress.css
index 66798b64..2557f247 100644
--- a/css/webform.progress.css
+++ b/css/webform.progress.css
@@ -1,8 +1,6 @@
 /**
  * @file
- * Wizard progress (numbering) styles.
- *
- * @see /webform/test_form_wizard_advanced
+ * Wizard progress styles.
  */
 
 .webform-progress__status {
diff --git a/css/webform.theme.bartik.css b/css/webform.theme.bartik.css
index e7efbd48..59da1cca 100644
--- a/css/webform.theme.bartik.css
+++ b/css/webform.theme.bartik.css
@@ -3,7 +3,6 @@
  * Bartik theme styles.
  */
 
-/* Add background color to table cells so that very wide off-screen tables look okay. */
 table {
   background-color: #fff;
 }
diff --git a/css/webform.theme.seven.css b/css/webform.theme.seven.css
index 82a5d7b6..a99c871d 100644
--- a/css/webform.theme.seven.css
+++ b/css/webform.theme.seven.css
@@ -3,12 +3,10 @@
  * Seven theme styles.
  */
 
-/* Align all tables cells top */
 table td {
   vertical-align: top;
 }
 
-/* Add background to nested details */
 details details {
   background-color: #f8f8f8;
 }
@@ -17,12 +15,14 @@ details details details {
   background-color: #fff;
 }
 
-/* Add white background to tooltips */
+.webform-help-details {
+  background-color: #f5f5f2;
+}
+
 .ui-tooltip.ui-widget {
   background: #fff;
 }
 
-/* Hide tabs and elements from printing. */
 @media print {
   .shortcut-action,
   .dropbutton-wrapper,
@@ -32,6 +32,6 @@ details details details {
   .button-action,
   .webform-submission-navigation,
   .webform-filter-form {
-    display: none !important; /* Using !important to ensure with these elements are hidden with getting into a specificity war */
+    display: none !important;
   }
 }
diff --git a/js/webform.states.js b/js/webform.states.js
index 3f7ab9e5..f49f4250 100644
--- a/js/webform.states.js
+++ b/js/webform.states.js
@@ -20,14 +20,14 @@
         // @see https://www.sitepoint.com/jquery-function-clear-form-data/
         $(':input', e.target).andSelf().each(function () {
           var $input = $(this);
-          backupValueAndRequired(this);
-          clearValueAndRequired(this);
+          backupValue(this);
+          clearValue(this);
           triggerEventHandlers(this);
         });
       }
       else {
         $(':input', e.target).andSelf().each(function () {
-          restoreValueAndRequired(this);
+          restoreValue(this);
           triggerEventHandlers(this);
         });
       }
@@ -72,22 +72,15 @@
   }
 
   /**
-   * Backup an input's current value and required attribute
+   * Backup an input's current value.
    *
    * @param input
    *   An input.
    */
-  function backupValueAndRequired(input) {
+  function backupValue(input) {
     var $input = $(input);
     var type = input.type;
     var tag = input.tagName.toLowerCase(); // Normalize case.
-
-    // Backup required.
-    if ($input.prop('required')) {
-      $input.data('webform-require', true);
-    }
-
-    // Backup value.
     if (type == 'checkbox' || type == 'radio') {
       $input.data('webform-value', $input.prop('checked'));
     }
@@ -101,57 +94,49 @@
     else if (type != 'submit' && type != 'button') {
       $input.data('webform-value', input.value);
     }
-
   }
 
   /**
-   * Restore an input's value and required attribute.
+   * Restore an input's value.
    *
    * @param input
    *   An input.
    */
-  function restoreValueAndRequired(input) {
+  function restoreValue(input) {
     var $input = $(input);
-
-    // Restore value.
     var value = $input.data('webform-value');
-    if (typeof value !== 'undefined') {
-      var type = input.type;
-      var tag = input.tagName.toLowerCase(); // Normalize case.
-
-      if (type == 'checkbox' || type == 'radio') {
-        $input.prop('checked', value)
-      }
-      else if (tag == 'select') {
-        $.each(value, function (i, option_value) {
-          $input.find("option[value='" + option_value + "']").prop("selected", true);
-        });
-      }
-      else if (type != 'submit' && type != 'button') {
-        input.value = value;
-      }
+    if (typeof value === 'undefined') {
+      return true;
     }
 
-    // Restore required.
-    if ($input.data('webform-required')) {
-      $input.prop('required', TRUE);
+    var type = input.type;
+    var tag = input.tagName.toLowerCase(); // Normalize case.
+
+    if (type == 'checkbox' || type == 'radio') {
+      $input.prop('checked', value)
+    }
+    else if (tag == 'select') {
+      $.each(value, function (i, option_value) {
+        $input.find("option[value='" + option_value + "']").prop("selected", true);
+      });
+    }
+    else if (type != 'submit' && type != 'button') {
+      input.value = value;
     }
   }
 
   /**
-   * Clear an input's value and required attributes.
+   * Clear an input's value.
    *
    * @param input
    *   An input.
    */
-  function clearValueAndRequired(input) {
+  function clearValue(input) {
     var $input = $(input);
-
-    // Clear value.
     var type = input.type;
     var tag = input.tagName.toLowerCase(); // Normalize case.
     if (type == 'checkbox' || type == 'radio') {
-      $input.prop('checked', false);
+      $input.prop('checked', false)
     }
     else if (tag == 'select') {
       if ($input.find('option[value=""]').length) {
@@ -164,9 +149,6 @@
     else if (type != 'submit' && type != 'button') {
       input.value = (type == 'color') ? '#000000' : '';
     }
-
-    // Clear required.
-    $input.prop('required', false);
   }
 
 })(jQuery, Drupal);
diff --git a/src/Plugin/WebformElement/WebformCodeMirror.php b/src/Plugin/WebformElement/WebformCodeMirror.php
index 439e89a4..ed8987a3 100644
--- a/src/Plugin/WebformElement/WebformCodeMirror.php
+++ b/src/Plugin/WebformElement/WebformCodeMirror.php
@@ -71,7 +71,6 @@ class WebformCodeMirror extends WebformElementBase {
    * {@inheritdoc}
    */
   public function getTestValues(array $element, WebformInterface $webform, array $options = []) {
-    $element += ['#mode' => 'text'];
     switch ($element['#mode']) {
       case 'html':
         return ['<p><b>Hello World!!!</b></p>'];
diff --git a/src/Tests/WebformConfirmationTest.php b/src/Tests/WebformConfirmationTest.php
index 7cc93e40..3142975b 100644
--- a/src/Tests/WebformConfirmationTest.php
+++ b/src/Tests/WebformConfirmationTest.php
@@ -19,6 +19,16 @@ class WebformConfirmationTest extends WebformTestBase {
   protected static $modules = ['system', 'user', 'webform', 'webform_test'];
 
   /**
+   * {@inheritdoc}
+   */
+  public function setUp() {
+    parent::setUp();
+
+    // Set page.front (aka <front>) to /node instead of /user/login.
+    \Drupal::configFactory()->getEditable('system.site')->set('page.front', '/node')->save();
+  }
+
+  /**
    * Tests webform confirmation.
    */
   public function testConfirmation() {
diff --git a/src/Tests/WebformHandlerEmailBasicTest.php b/src/Tests/WebformHandlerEmailBasicTest.php
index 5d0e7b79..e0cd2c54 100644
--- a/src/Tests/WebformHandlerEmailBasicTest.php
+++ b/src/Tests/WebformHandlerEmailBasicTest.php
@@ -21,7 +21,6 @@ class WebformHandlerEmailBasicTest extends WebformTestBase {
     $webform_handler_email = Webform::load('test_handler_email');
 
     // Create a submission using the test webform's default values.
-    $this->drupalLogout();
     $this->postSubmission($webform_handler_email);
 
     // Check sending a basic email via a submission.
diff --git a/src/Tests/WebformSubmissionListBuilderTest.php b/src/Tests/WebformSubmissionListBuilderTest.php
index defc8249..033c9ebe 100644
--- a/src/Tests/WebformSubmissionListBuilderTest.php
+++ b/src/Tests/WebformSubmissionListBuilderTest.php
@@ -17,6 +17,9 @@ class WebformSubmissionListBuilderTest extends WebformTestBase {
   public function testResults() {
     global $base_path;
 
+    // Login the normal user.
+    $this->drupalLogin($this->normalUser);
+
     /** @var \Drupal\webform\WebformInterface $webform */
     /** @var \Drupal\webform\WebformSubmissionInterface[] $submissions */
     list($webform, $submissions) = $this->createWebformWithSubmissions();
diff --git a/src/Tests/WebformTestBase.php b/src/Tests/WebformTestBase.php
index a3d075f6..bb05f284 100644
--- a/src/Tests/WebformTestBase.php
+++ b/src/Tests/WebformTestBase.php
@@ -24,17 +24,11 @@ abstract class WebformTestBase extends WebTestBase {
   public function setUp() {
     parent::setUp();
 
-    // Set page.front (aka <front>) to /node instead of /user/login.
-    \Drupal::configFactory()->getEditable('system.site')->set('page.front', '/node')->save();
-
     // Place blocks.
-    $this->placeBlocks();
+    // $this->placeBlocks();
 
     // Create users.
     $this->createUsers();
-
-    // Login the normal user.
-    $this->drupalLogin($this->normalUser);
   }
 
   /**
diff --git a/webform.libraries.make.yml b/webform.libraries.make.yml
index c2414ea2..e1ce8d9a 100644
--- a/webform.libraries.make.yml
+++ b/webform.libraries.make.yml
@@ -32,7 +32,7 @@ libraries:
       url: 'https://github.com/RobinHerbots/jquery.inputmask/archive/3.3.3.zip'
 
   rateit:
-    directory_name: jquery.rateit
+    directory_name: rateit
     destination: libraries
     download:
       type: get
diff --git a/webform.libraries.yml b/webform.libraries.yml
index 3c2402a0..4b92a5df 100644
--- a/webform.libraries.yml
+++ b/webform.libraries.yml
@@ -289,6 +289,9 @@ webform.element.image_file:
 
 webform.element.html_editor:
   version: 1.x
+  css:
+    theme:
+      css/webform.element.html_editor.css: {}
   js:
     js/webform.element.html_editor.js: {}
   dependencies:
diff --git a/webform.module b/webform.module
index 375f8350..2b5b7f01 100644
--- a/webform.module
+++ b/webform.module
@@ -288,18 +288,16 @@ function webform_page_attachments(&$page) {
   $route_name = Drupal::routeMatch()->getRouteName();
   $url = Url::fromRoute('<current>')->toString();
 
-  // Attach global libraries only to webform specific pages.
+  // Attach global libraries.
   if (preg_match('/^(webform\.|^entity\.([^.]+\.)?webform)/', $route_name) || preg_match('#(/node/add/webform|/admin/help/webform)#', $url)) {
     // Attach theme specific library to webform routers so that we can tweak
-    // the bartik.theme and seven.theme.
+    // the seven.theme.
     $theme = \Drupal::theme()->getActiveTheme()->getName();
     if (file_exists(drupal_get_path('module', 'webform') . "/css/webform.theme.$theme.css")) {
       $page['#attached']['library'][] = "webform/webform.theme.$theme";
     }
 
     // Attach details element save open/close library.
-    // This ensures pages without a webform will still be able to save the
-    // details element state.
     if (\Drupal::config('webform.settings')->get('ui.details_save')) {
       $page['#attached']['library'][] = 'webform/webform.element.details.save';
     }
