diff --git a/src/plugins/autotest/autotest.pro b/src/plugins/autotest/autotest.pro
index 07d38fdab3a0f34d5d7d8be7b2887365143e7a3d..9cf411299d440cde24f2c9586e04bdb05a6af6ce 100644
--- a/src/plugins/autotest/autotest.pro
+++ b/src/plugins/autotest/autotest.pro
@@ -102,7 +102,8 @@ HEADERS += \
     quick/quicktestvisitors.h \
     quick/quicktestframework.h \
     testframeworkmanager.h \
-    testrunconfiguration.h
+    testrunconfiguration.h \
+    itestsettingspage.h
 
 RESOURCES += \
     autotest.qrc
diff --git a/src/plugins/autotest/autotest.qbs b/src/plugins/autotest/autotest.qbs
index fcef33b454c4ad44d2028246aa16bafdd149225d..9552909ed7d80c6b16939efde5df7a2bbd403d5f 100644
--- a/src/plugins/autotest/autotest.qbs
+++ b/src/plugins/autotest/autotest.qbs
@@ -72,6 +72,7 @@ QtcPlugin {
         "itestparser.h",
         "itestframework.h",
         "iframeworksettings.h",
+        "itestsettingspage.h",
         "testframeworkmanager.cpp",
         "testframeworkmanager.h",
         "testrunconfiguration.h"
diff --git a/src/plugins/autotest/autotestconstants.h b/src/plugins/autotest/autotestconstants.h
index b4bef1400c1f45c57430645fa15054f37dafcd56..7c1aaa0dac284726ba5571e9bf08db5dbde96438 100644
--- a/src/plugins/autotest/autotestconstants.h
+++ b/src/plugins/autotest/autotestconstants.h
@@ -42,7 +42,7 @@ const char AUTOTEST_SETTINGS_CATEGORY[] = "ZY.Tests";
 const char AUTOTEST_SETTINGS_TR[]       = QT_TRANSLATE_NOOP("AutoTest", "Test Settings");
 const char FRAMEWORK_PREFIX[]           = "AutoTest.Framework.";
 
-
+const char SETTINGSPAGE_PREFIX[]        = "A.AutoTest.";
 const char SETTINGSGROUP[]              = "Autotest";
 } // namespace Constants
 } // namespace Autotest
diff --git a/src/plugins/autotest/gtest/gtestframework.cpp b/src/plugins/autotest/gtest/gtestframework.cpp
index 4ec6cd9962d012ccdc7e13a7dedaf8f6a978ef3b..3117e9d3f1b72a901750785f77c3f717239fe2e8 100644
--- a/src/plugins/autotest/gtest/gtestframework.cpp
+++ b/src/plugins/autotest/gtest/gtestframework.cpp
@@ -61,9 +61,9 @@ IFrameworkSettings *GTestFramework::createFrameworkSettings() const
     return new GTestSettings;
 }
 
-Core::IOptionsPage *GTestFramework::createSettingsPage(QSharedPointer<IFrameworkSettings> settings) const
+ITestSettingsPage *GTestFramework::createSettingsPage(QSharedPointer<IFrameworkSettings> settings) const
 {
-    return new GTestSettingsPage(settings);
+    return new GTestSettingsPage(settings, this);
 }
 
 bool GTestFramework::hasFrameworkSettings() const
diff --git a/src/plugins/autotest/gtest/gtestframework.h b/src/plugins/autotest/gtest/gtestframework.h
index 6645da153363bb55ff4a6a80529c2edc63171d6b..42c91118f529000070a9bc20031fd78856deda5f 100644
--- a/src/plugins/autotest/gtest/gtestframework.h
+++ b/src/plugins/autotest/gtest/gtestframework.h
@@ -37,7 +37,7 @@ public:
     const char *name() const override;
     unsigned priority() const override;
     IFrameworkSettings *createFrameworkSettings() const override;
-    Core::IOptionsPage *createSettingsPage(QSharedPointer<IFrameworkSettings> settings) const override;
+    ITestSettingsPage *createSettingsPage(QSharedPointer<IFrameworkSettings> settings) const override;
     bool hasFrameworkSettings() const override;
 protected:
     ITestParser *createTestParser() const override;
diff --git a/src/plugins/autotest/gtest/gtestsettingspage.cpp b/src/plugins/autotest/gtest/gtestsettingspage.cpp
index 77b34d0d45d3f775beeef724a129b9000a08f141..932fc947dea2875dc944567b2ac37fe10a82d2c9 100644
--- a/src/plugins/autotest/gtest/gtestsettingspage.cpp
+++ b/src/plugins/autotest/gtest/gtestsettingspage.cpp
@@ -65,18 +65,14 @@ GTestSettings GTestSettingsWidget::settings() const
     return result;
 }
 
-GTestSettingsPage::GTestSettingsPage(QSharedPointer<IFrameworkSettings> settings)
-    : m_settings(qSharedPointerCast<GTestSettings>(settings)), m_widget(0)
+GTestSettingsPage::GTestSettingsPage(QSharedPointer<IFrameworkSettings> settings,
+                                     const ITestFramework *framework)
+    : ITestSettingsPage(framework),
+      m_settings(qSharedPointerCast<GTestSettings>(settings)),
+      m_widget(0)
 {
-    setId("A.AutoTest.10.GTest"); // FIXME
     setDisplayName(QCoreApplication::translate("GTestFramework",
                                                GTest::Constants::FRAMEWORK_SETTINGS_CATEGORY));
-    setCategory(Constants::AUTOTEST_SETTINGS_CATEGORY);
-    setDisplayCategory(QCoreApplication::translate("AutoTest", Constants::AUTOTEST_SETTINGS_TR));
-}
-
-GTestSettingsPage::~GTestSettingsPage()
-{
 }
 
 QWidget *GTestSettingsPage::widget()
diff --git a/src/plugins/autotest/gtest/gtestsettingspage.h b/src/plugins/autotest/gtest/gtestsettingspage.h
index cdef183de09ca7f242b077fff8af1ac92455c56f..c17753be4b5fbdf64dfff9ba2e91cefd52f87f60 100644
--- a/src/plugins/autotest/gtest/gtestsettingspage.h
+++ b/src/plugins/autotest/gtest/gtestsettingspage.h
@@ -27,7 +27,7 @@
 
 #include "ui_gtestsettingspage.h"
 
-#include <coreplugin/dialogs/ioptionspage.h>
+#include "../itestsettingspage.h"
 
 #include <QPointer>
 
@@ -50,12 +50,11 @@ private:
     Ui::GTestSettingsPage m_ui;
 };
 
-class GTestSettingsPage : public Core::IOptionsPage
+class GTestSettingsPage : public ITestSettingsPage
 {
     Q_OBJECT
 public:
-    explicit GTestSettingsPage(QSharedPointer<IFrameworkSettings> settings);
-    ~GTestSettingsPage();
+    GTestSettingsPage(QSharedPointer<IFrameworkSettings> settings, const ITestFramework *framework);
 
     QWidget *widget() override;
     void apply() override;
diff --git a/src/plugins/autotest/itestframework.h b/src/plugins/autotest/itestframework.h
index d752da025060c494170324410a14fefc44a413b9..ae6e0ec437c1409393a14a1f4d3cf1a4e39666fa 100644
--- a/src/plugins/autotest/itestframework.h
+++ b/src/plugins/autotest/itestframework.h
@@ -28,12 +28,11 @@
 #include "testtreeitem.h"
 #include "itestparser.h"
 
-namespace Core { class IOptionsPage; }
-
 namespace Autotest {
 namespace Internal {
 
 class IFrameworkSettings;
+class ITestSettingsPage;
 
 class ITestFramework
 {
@@ -49,7 +48,7 @@ public:
     virtual unsigned priority() const = 0;          // should this be modifyable?
     virtual bool hasFrameworkSettings() const { return false; }
     virtual IFrameworkSettings *createFrameworkSettings() const { return 0; }
-    virtual Core::IOptionsPage *createSettingsPage(QSharedPointer<IFrameworkSettings> settings) const
+    virtual ITestSettingsPage *createSettingsPage(QSharedPointer<IFrameworkSettings> settings) const
     {
         Q_UNUSED(settings);
         return 0;
diff --git a/src/plugins/autotest/itestsettingspage.h b/src/plugins/autotest/itestsettingspage.h
new file mode 100644
index 0000000000000000000000000000000000000000..cce44e8bc3f5e25adaf91eff8ca48bf850792eae
--- /dev/null
+++ b/src/plugins/autotest/itestsettingspage.h
@@ -0,0 +1,70 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of Qt Creator.
+**
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+****************************************************************************/
+
+#pragma once
+
+#include "autotestconstants.h"
+#include "itestframework.h"
+
+#include <coreplugin/dialogs/ioptionspage.h>
+
+namespace Autotest {
+namespace Internal {
+
+class IFrameworkSettings;
+
+class ITestSettingsPage : public Core::IOptionsPage
+{
+public:
+    explicit ITestSettingsPage(const ITestFramework *framework)
+    {
+        setId(Core::Id(Constants::SETTINGSPAGE_PREFIX).withSuffix(
+                QString("%1.%2").arg(framework->priority()).arg(QLatin1String(framework->name()))));
+        setCategory(Constants::AUTOTEST_SETTINGS_CATEGORY);
+        setDisplayCategory(QCoreApplication::translate("AutoTest",
+                                                       Constants::AUTOTEST_SETTINGS_TR));
+    }
+
+    virtual ~ITestSettingsPage() {}
+
+private:
+    void setId(Core::Id id)
+    {
+        Core::IOptionsPage::setId(id);
+    }
+
+    void setCategory(Core::Id category)
+    {
+        Core::IOptionsPage::setCategory(category);
+    }
+
+    void setDisplayCategory(const QString &displayCategory)
+    {
+        Core::IOptionsPage::setDisplayCategory(displayCategory);
+    }
+};
+
+} // namespace Internal
+} // namespace Autotest
diff --git a/src/plugins/autotest/qtest/qttestframework.cpp b/src/plugins/autotest/qtest/qttestframework.cpp
index 8bcefb248b04663cfd08a10768760a2b725ba7f0..25250e83bc6f17c8beb1959e97cd3e08ad5ea99f 100644
--- a/src/plugins/autotest/qtest/qttestframework.cpp
+++ b/src/plugins/autotest/qtest/qttestframework.cpp
@@ -51,9 +51,9 @@ IFrameworkSettings *QtTestFramework::createFrameworkSettings() const
     return new QtTestSettings;
 }
 
-Core::IOptionsPage *QtTestFramework::createSettingsPage(QSharedPointer<IFrameworkSettings> settings) const
+ITestSettingsPage *QtTestFramework::createSettingsPage(QSharedPointer<IFrameworkSettings> settings) const
 {
-    return new QtTestSettingsPage(settings);
+    return new QtTestSettingsPage(settings, this);
 }
 
 bool QtTestFramework::hasFrameworkSettings() const
diff --git a/src/plugins/autotest/qtest/qttestframework.h b/src/plugins/autotest/qtest/qttestframework.h
index a6cfcb9f2a55c15d661977ef0e30671629069046..e9a181591ffdf4f7803d680fa1b5d782961b084f 100644
--- a/src/plugins/autotest/qtest/qttestframework.h
+++ b/src/plugins/autotest/qtest/qttestframework.h
@@ -37,7 +37,7 @@ public:
     const char *name() const override;
     unsigned priority() const override;
     IFrameworkSettings *createFrameworkSettings() const override;
-    Core::IOptionsPage *createSettingsPage(QSharedPointer<IFrameworkSettings> settings) const override;
+    ITestSettingsPage *createSettingsPage(QSharedPointer<IFrameworkSettings> settings) const override;
     bool hasFrameworkSettings() const override;
 
 protected:
diff --git a/src/plugins/autotest/qtest/qttestsettingspage.cpp b/src/plugins/autotest/qtest/qttestsettingspage.cpp
index fbaf252fdaf869083f9e302693604a9b7e0b5587..54e081a02d367771e8439e0127459fc6d4953e5c 100644
--- a/src/plugins/autotest/qtest/qttestsettingspage.cpp
+++ b/src/plugins/autotest/qtest/qttestsettingspage.cpp
@@ -86,18 +86,14 @@ QtTestSettings QtTestSettingsWidget::settings() const
     return result;
 }
 
-QtTestSettingsPage::QtTestSettingsPage(QSharedPointer<IFrameworkSettings> settings)
-    : m_settings(qSharedPointerCast<QtTestSettings>(settings)), m_widget(0)
+QtTestSettingsPage::QtTestSettingsPage(QSharedPointer<IFrameworkSettings> settings,
+                                       const ITestFramework *framework)
+    : ITestSettingsPage(framework),
+      m_settings(qSharedPointerCast<QtTestSettings>(settings)),
+      m_widget(0)
 {
-    setId("A.AutoTest.1.QtTest"); // FIXME
     setDisplayName(QCoreApplication::translate("QtTestFramework",
                                                QtTest::Constants::FRAMEWORK_SETTINGS_CATEGORY));
-    setCategory(Constants::AUTOTEST_SETTINGS_CATEGORY);
-    setDisplayCategory(QCoreApplication::translate("AutoTest", Constants::AUTOTEST_SETTINGS_TR));
-}
-
-QtTestSettingsPage::~QtTestSettingsPage()
-{
 }
 
 QWidget *QtTestSettingsPage::widget()
diff --git a/src/plugins/autotest/qtest/qttestsettingspage.h b/src/plugins/autotest/qtest/qttestsettingspage.h
index 2b5c64d53404ebd27aefc33a80813ff77757e271..abfca142c960c9c95dfd7d8f02d72a41e558f7c0 100644
--- a/src/plugins/autotest/qtest/qttestsettingspage.h
+++ b/src/plugins/autotest/qtest/qttestsettingspage.h
@@ -27,7 +27,7 @@
 
 #include "ui_qttestsettingspage.h"
 
-#include <coreplugin/dialogs/ioptionspage.h>
+#include "../itestsettingspage.h"
 
 #include <QPointer>
 
@@ -50,12 +50,11 @@ private:
     Ui::QtTestSettingsPage m_ui;
 };
 
-class QtTestSettingsPage : public Core::IOptionsPage
+class QtTestSettingsPage : public ITestSettingsPage
 {
     Q_OBJECT
 public:
-    explicit QtTestSettingsPage(QSharedPointer<IFrameworkSettings> settings);
-    ~QtTestSettingsPage();
+    QtTestSettingsPage(QSharedPointer<IFrameworkSettings> settings, const ITestFramework *framework);
 
     QWidget *widget() override;
     void apply() override;
diff --git a/src/plugins/autotest/testframeworkmanager.cpp b/src/plugins/autotest/testframeworkmanager.cpp
index 0b65a79e179646e53860e7bfd670a2a3c05b7bb7..16a33d74251e8ec0141cc57677b647e856cd5fb9 100644
--- a/src/plugins/autotest/testframeworkmanager.cpp
+++ b/src/plugins/autotest/testframeworkmanager.cpp
@@ -29,12 +29,12 @@
 #include "iframeworksettings.h"
 #include "itestframework.h"
 #include "itestparser.h"
+#include "itestsettingspage.h"
 #include "testrunner.h"
 #include "testsettings.h"
 #include "testtreeitem.h"
 #include "testtreemodel.h"
 
-#include <coreplugin/dialogs/ioptionspage.h>
 #include <utils/algorithm.h>
 #include <utils/qtcassert.h>