diff --git a/Tools/ChangeLog b/Tools/ChangeLog
index da8bf7c..198a770 100644
--- a/Tools/ChangeLog
+++ b/Tools/ChangeLog
@@ -1,3 +1,16 @@
+2019-10-17  Pablo Saavedra  <psaavedra@igalia.com>
+
+        Add a driver for MiniBrowser running with WPE for
+        benchmark_runner
+        https://bugs.webkit.org/show_bug.cgi?id=202994
+
+        Reviewed by Žan Doberšek.
+
+        * Scripts/webkitpy/benchmark_runner/browser_driver/linux_minibrowserwpe_driver.py: Added.
+        (WPEMiniBrowserDriver):
+        (WPEMiniBrowserDriver.launch_url):
+        (WPEMiniBrowserDriver.launch_driver):
+
 2019-10-17  Carlos Alberto Lopez Perez  <clopez@igalia.com>
 
         run-buildbot-test: sqlalchemy exception when upgrading the database
diff --git a/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/linux_minibrowserwpe_driver.py b/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/linux_minibrowserwpe_driver.py
new file mode 100644
index 0000000..2bb2401
--- /dev/null
+++ b/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/linux_minibrowserwpe_driver.py
@@ -0,0 +1,42 @@
+# Copyright (C) 2019 Igalia S.L. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+from linux_browser_driver import LinuxBrowserDriver
+
+
+class WPEMiniBrowserDriver(LinuxBrowserDriver):
+    browser_name = 'minibrowser-wpe'
+    process_search_list = ['Tools/Scripts/run-minibrowser', 'MiniBrowser']
+
+    def launch_url(self, url, options, browser_build_path, browser_path):
+        self._browser_arguments = []
+        if self.process_name.endswith('run-minibrowser'):
+            self._browser_arguments.append('--wpe')
+        self._browser_arguments.append(url)
+        super(WPEMiniBrowserDriver, self).launch_url(url, options, browser_build_path, browser_path)
+
+    def launch_driver(self, url, options, browser_build_path):
+        raise ValueError("Browser {browser} is not available with webdriver".format(browser=self.browser_name))
