diff --git a/lib/docs/filters/qunit/clean_html.rb b/lib/docs/filters/qunit/clean_html.rb
new file mode 100644
index 00000000..c85daaf8
--- /dev/null
+++ b/lib/docs/filters/qunit/clean_html.rb
@@ -0,0 +1,12 @@
+# frozen_string_literal: true
+
+module Docs
+ class Qunit
+ class CleanHtmlFilter < Filter
+ def call
+ css('.sidebar').remove
+ doc
+ end
+ end
+ end
+end
diff --git a/lib/docs/filters/qunit/entries.rb b/lib/docs/filters/qunit/entries.rb
new file mode 100644
index 00000000..43de1c5a
--- /dev/null
+++ b/lib/docs/filters/qunit/entries.rb
@@ -0,0 +1,23 @@
+# frozen_string_literal: true
+
+module Docs
+ class Qunit
+ class EntriesFilter < Docs::EntriesFilter
+ TYPE_MAPPING = {
+ 'QUnit' => '1. Main methods',
+ 'assert' => '2. Assertions',
+ 'callbacks' => '3. Callback events',
+ 'config' => '4. Configuration',
+ 'extension' => '5. Extension interface'
+ }
+ def get_name
+ at_css('h1').content
+ end
+
+ def get_type
+ main, *rest = *slug.split('/')
+ TYPE_MAPPING[main]
+ end
+ end
+ end
+end
diff --git a/lib/docs/scrapers/qunit.rb b/lib/docs/scrapers/qunit.rb
new file mode 100644
index 00000000..f7cc13e1
--- /dev/null
+++ b/lib/docs/scrapers/qunit.rb
@@ -0,0 +1,32 @@
+# frozen_string_literal: true
+
+module Docs
+ class Qunit < UrlScraper
+ self.name = 'QUnit'
+ self.type = 'qunit'
+ self.release = '2.19.3'
+ self.base_url = 'https://api.qunitjs.com/'
+ self.root_path = '/'
+ self.links = {
+ home: 'https://qunitjs.com/',
+ code: 'https://github.com/qunitjs/qunit'
+ }
+
+ html_filters.push 'qunit/entries', 'qunit/clean_html'
+
+ options[:trailing_slash] = false
+
+ options[:container] = '.main'
+ options[:skip_patterns] = [
+ /deprecated/,
+ /^QUnit$/,
+ /^assert$/,
+ /^callbacks$/,
+ /^async$/,
+ /^config$/,
+ /^extension$/,
+ ]
+
+ options[:attribution] = 'Copyright OpenJS Foundation and contributors.'
+ end
+end
diff --git a/public/icons/docs/qunit/16.png b/public/icons/docs/qunit/16.png
new file mode 100644
index 00000000..4d7fdb41
Binary files /dev/null and b/public/icons/docs/qunit/16.png differ
diff --git a/public/icons/docs/qunit/16@2x.png b/public/icons/docs/qunit/16@2x.png
new file mode 100644
index 00000000..b9ae2d2f
Binary files /dev/null and b/public/icons/docs/qunit/16@2x.png differ
diff --git a/public/icons/docs/qunit/SOURCE b/public/icons/docs/qunit/SOURCE
new file mode 100644
index 00000000..560740c2
--- /dev/null
+++ b/public/icons/docs/qunit/SOURCE
@@ -0,0 +1 @@
+https://raw.githubusercontent.com/qunitjs/qunitjs.com/main/img/logo.svg