diff --git a/bt5/erp5_knowledge_pad_ui_test/SkinTemplateItem/portal_skins/erp5_knowledge_pad_ui_test/Zuite_AddGadgetToActivePad.xml b/bt5/erp5_knowledge_pad_ui_test/SkinTemplateItem/portal_skins/erp5_knowledge_pad_ui_test/Zuite_AddGadgetToActivePad.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6b36e4847a5362ca85b73d79f9dfcba5c305d37d
--- /dev/null
+++ b/bt5/erp5_knowledge_pad_ui_test/SkinTemplateItem/portal_skins/erp5_knowledge_pad_ui_test/Zuite_AddGadgetToActivePad.xml
@@ -0,0 +1,159 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>Script_magic</string> </key>
+            <value> <int>3</int> </value>
+        </item>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_container</string> </key>
+                                <value> <string>container</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_context</string> </key>
+                                <value> <string>context</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_m_self</string> </key>
+                                <value> <string>script</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>_body</string> </key>
+            <value> <string>"""\n
+  Add (if not present) gadgets to current knowledge pad.\n
+"""\n
+\n
+all_pads = [x for x in context.ERP5Site_getKnowledgePadListForUser(mode, default_pad_group)]\n
+if mode.startswith(\'web\'):\n
+  active_pad, all_pads = context.WebSite_getActiveKnowledgePadForUser(all_pads, default_pad_group)\n
+else:\n
+  active_pad, all_pads = context.ERP5Site_getActiveKnowledgePadForUser(all_pads)\n
+\n
+active_pad = active_pad.getObject()\n
+gadget_list = active_pad.contentValues(filter={\'portal_type\': \'Knowledge Box\'})\n
+contained_gadgets = [x.getSpecialiseValue().getRelativeUrl() \\\n
+                       for x in gadget_list if x.getValidationState() in (\'visible\', \'invisible\',)]\n
+if gadget_relative_url not in contained_gadgets:\n
+  # add only if not there\n
+  knowledge_box = active_pad.newContent(portal_type=\'Knowledge Box\')\n
+  knowledge_box.setSpecialiseValue(gadget_relative_url)\n
+  knowledge_box.visible()\n
+else:\n
+  # reuse gadget\n
+  knowledge_box = [x for x in gadget_list if x.getSpecialiseValue().getRelativeUrl()==gadget_relative_url][0]\n
+\n
+context.REQUEST.set(\'portal_status_message\', knowledge_box.getRelativeUrl())\n
+return context.view()\n
+</string> </value>
+        </item>
+        <item>
+            <key> <string>_code</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>_params</string> </key>
+            <value> <string>gadget_relative_url, mode=\'erp5_front\', default_pad_group=None</string> </value>
+        </item>
+        <item>
+            <key> <string>errors</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>func_code</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="FuncCode" module="Shared.DC.Scripts.Signature"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>co_argcount</string> </key>
+                        <value> <int>3</int> </value>
+                    </item>
+                    <item>
+                        <key> <string>co_varnames</string> </key>
+                        <value>
+                          <tuple>
+                            <string>gadget_relative_url</string>
+                            <string>mode</string>
+                            <string>default_pad_group</string>
+                            <string>append</string>
+                            <string>$append0</string>
+                            <string>_getiter_</string>
+                            <string>_getattr_</string>
+                            <string>context</string>
+                            <string>x</string>
+                            <string>all_pads</string>
+                            <string>active_pad</string>
+                            <string>gadget_list</string>
+                            <string>contained_gadgets</string>
+                            <string>knowledge_box</string>
+                            <string>_getitem_</string>
+                          </tuple>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>func_defaults</string> </key>
+            <value>
+              <tuple>
+                <string>erp5_front</string>
+                <none/>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>Zuite_AddGadgetToActivePad</string> </value>
+        </item>
+        <item>
+            <key> <string>warnings</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_knowledge_pad_ui_test/SkinTemplateItem/portal_skins/erp5_knowledge_pad_ui_test/Zuite_getGadgetIdByRelativeUrl.xml b/bt5/erp5_knowledge_pad_ui_test/SkinTemplateItem/portal_skins/erp5_knowledge_pad_ui_test/Zuite_getGadgetIdByRelativeUrl.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2eb4413f51ea2618c7a77e56f1b03cdf59157c89
--- /dev/null
+++ b/bt5/erp5_knowledge_pad_ui_test/SkinTemplateItem/portal_skins/erp5_knowledge_pad_ui_test/Zuite_getGadgetIdByRelativeUrl.xml
@@ -0,0 +1,125 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>Script_magic</string> </key>
+            <value> <int>3</int> </value>
+        </item>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_container</string> </key>
+                                <value> <string>container</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_context</string> </key>
+                                <value> <string>context</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_m_self</string> </key>
+                                <value> <string>script</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>_body</string> </key>
+            <value> <string>"""\n
+  XXX: Turn relative url into dom_id and pass through page with portal_status_message.\n
+  This is used in Selenium tests and is a bit dirty way to have it handled.\n
+"""\n
+context.REQUEST.set(\'portal_status_message\', knowledge_box_url.replace(\'/\',\'_\'))\n
+return context.view()\n
+</string> </value>
+        </item>
+        <item>
+            <key> <string>_code</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>_params</string> </key>
+            <value> <string>knowledge_box_url</string> </value>
+        </item>
+        <item>
+            <key> <string>errors</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>func_code</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="FuncCode" module="Shared.DC.Scripts.Signature"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>co_argcount</string> </key>
+                        <value> <int>1</int> </value>
+                    </item>
+                    <item>
+                        <key> <string>co_varnames</string> </key>
+                        <value>
+                          <tuple>
+                            <string>knowledge_box_url</string>
+                            <string>_getattr_</string>
+                            <string>context</string>
+                          </tuple>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>func_defaults</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>Zuite_getGadgetIdByRelativeUrl</string> </value>
+        </item>
+        <item>
+            <key> <string>warnings</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_knowledge_pad_ui_test/bt/revision b/bt5/erp5_knowledge_pad_ui_test/bt/revision
index bf0d87ab1b2b0ec1a11a3973d2845b42413d9767..7813681f5b41c028345ca62a2be376bae70b7f61 100644
--- a/bt5/erp5_knowledge_pad_ui_test/bt/revision
+++ b/bt5/erp5_knowledge_pad_ui_test/bt/revision
@@ -1 +1 @@
-4
\ No newline at end of file
+5
\ No newline at end of file