Skip to content

Commit e7c6f99

Browse files
author
hekra01
authored
Merge pull request #17 from cisco-open-source/REFACTOR
Refactor samples and launcher
2 parents 5dd09e7 + 7bcb8cc commit e7c6f99

File tree

5 files changed

+403
-316
lines changed

5 files changed

+403
-316
lines changed

src/Test/Headers.h

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
/****************************************************************************
2+
**
3+
** Copyright © 1992-2014 Cisco and/or its affiliates. All rights reserved.
4+
** All rights reserved.
5+
**
6+
** $CISCO_BEGIN_LICENSE:LGPL$
7+
**
8+
** GNU Lesser General Public License Usage
9+
** Alternatively, this file may be used under the terms of the GNU Lesser
10+
** General Public License version 2.1 as published by the Free Software
11+
** Foundation and appearing in the file LICENSE.LGPL included in the
12+
** packaging of this file. Please review the following information to
13+
** ensure the GNU Lesser General Public License version 2.1 requirements
14+
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
15+
**
16+
** $CISCO_END_LICENSE$
17+
**
18+
****************************************************************************/
19+
#include <QtCore/QObject>
20+
#include <QtCore/QTextCodec>
21+
22+
#if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
23+
#include <QtConcurrent/QtConcurrentRun>
24+
#if (WD_ENABLE_WEB_VIEW == 1)
25+
#include <QtWebKitWidgets/QWebView>
26+
#endif
27+
#include <QtWidgets/QApplication>
28+
#else
29+
#include <QtGui/QApplication>
30+
#if (WD_ENABLE_WEB_VIEW == 1)
31+
#include <QtWebKit/QtWebKit>
32+
#endif
33+
#endif
34+
35+
#include <iostream>
36+
37+
#include "base/at_exit.h"
38+
#include "webdriver_server.h"
39+
#include "webdriver_view_transitions.h"
40+
#include "versioninfo.h"
41+
#include "webdriver_route_table.h"
42+
#include "shutdown_command.h"
43+
#include "webdriver_route_patterns.h"
44+
45+
#if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
46+
// headers for Quick2 extension
47+
#include "extension_qt/quick2_view_creator.h"
48+
#include "extension_qt/quick2_view_executor.h"
49+
#include "extension_qt/quick2_view_enumerator.h"
50+
#else
51+
#include <QtDeclarative/QDeclarativeView>
52+
// headers for Quick1 extension
53+
#include "extension_qt/qml_view_creator.h"
54+
#include "extension_qt/qml_view_executor.h"
55+
#include "extension_qt/qml_view_enumerator.h"
56+
#if (WD_ENABLE_WEB_VIEW == 1)
57+
#include "extension_qt/qdeclarativewebview.h"
58+
#include "extension_qt/qml_web_view_enumerator.h"
59+
#include "extension_qt/qml_web_view_executor.h"
60+
#endif //WD_ENABLE_WEB_VIEW
61+
#endif //QT_VERSION
62+
63+
#if (WD_ENABLE_WEB_VIEW == 1)
64+
#include "extension_qt/web_view_creator.h"
65+
#include "extension_qt/web_view_executor.h"
66+
#include "extension_qt/web_view_enumerator.h"
67+
#include "extension_qt/qwebviewext.h"
68+
#include "extension_qt/graphics_web_view_executor.h"
69+
#include "extension_qt/graphics_web_view_enumerator.h"
70+
#endif //WD_ENABLE_WEB_VIEW
71+
72+
#include "extension_qt/q_view_runner.h"
73+
#include "extension_qt/q_session_lifecycle_actions.h"
74+
#include "extension_qt/widget_view_creator.h"
75+
#include "extension_qt/widget_view_enumerator.h"
76+
#include "extension_qt/widget_view_executor.h"
77+
#include "extension_qt/wd_event_dispatcher.h"
78+
#include "extension_qt/vnc_event_dispatcher.h"
79+
#include "extension_qt/uinput_event_dispatcher.h"
80+
81+
#ifndef QT_NO_VNC
82+
#include "extension_qt/vncclient.h"
83+
#endif // QT_NO_VNC
84+
#ifndef QT_NO_UINPUT
85+
#include "extension_qt/uinput_manager.h"
86+
#endif // QT_NO_UINPUT
87+
#include "webdriver_switches.h"
88+
89+
int wd_setup(int argc, char *argv[]);

src/Test/Samples.h

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
/****************************************************************************
2+
**
3+
** Copyright © 1992-2014 Cisco and/or its affiliates. All rights reserved.
4+
** All rights reserved.
5+
**
6+
** $CISCO_BEGIN_LICENSE:LGPL$
7+
**
8+
** GNU Lesser General Public License Usage
9+
** Alternatively, this file may be used under the terms of the GNU Lesser
10+
** General Public License version 2.1 as published by the Free Software
11+
** Foundation and appearing in the file LICENSE.LGPL included in the
12+
** packaging of this file. Please review the following information to
13+
** ensure the GNU Lesser General Public License version 2.1 requirements
14+
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
15+
**
16+
** $CISCO_END_LICENSE$
17+
**
18+
****************************************************************************/
19+
20+
#include "WindowTest.h"
21+
#include "ClickTest.h"
22+
#include "ElementAttributeTest.h"
23+
#include "FindingTest.h"
24+
#include "CoordinatesTest.h"
25+
#include "ClickScrollingTest.h"
26+
#include "ElementSelectingTest.h"
27+
#include "TypingTest.h"
28+
#include "BasicKeyboardInterfaceTest.h"
29+
#include "TextHandlingTest.h"
30+
#include "FormHandlingTest.h"
31+
#include "XPathElementFindingTest.h"
32+
#include "StaleElementReferenceTest.h"
33+
#include "VisibilityTest.h"
34+
#include "BasicMouseInterfaceTest.h"
35+
#include "TouchTest.h"
36+
#include "MenuTest.h"
37+
38+
#if (QT_VERSION < QT_VERSION_CHECK(5, 0, 0))
39+
#include "WindowWithDeclarativeViewTest.h"
40+
#endif
41+
42+
#if (1 == WD_ENABLE_PLAYER) && (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
43+
#include "VideoTest.h"
44+
extern std::string testDataFolder;
45+
#endif // WD_ENABLE_PLAYER
46+
47+
#if (WD_ENABLE_WEB_VIEW == 1)
48+
#include "GraphicsWebViewTest.h"
49+
#include "WindowWithEmbeddedViewTest.h"
50+
#include "WidgetAndWebViewTest.h"
51+
#if (QT_VERSION < QT_VERSION_CHECK(5, 0, 0))
52+
#include "WindowWithSeparatedDeclarativeAndWebViewsTest.h"
53+
#endif //QT_VERSION
54+
#endif //WD_ENABLE_WEB_VIEW

src/Test/Setup.cc

Lines changed: 245 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,245 @@
1+
/****************************************************************************
2+
**
3+
** Copyright © 1992-2014 Cisco and/or its affiliates. All rights reserved.
4+
** All rights reserved.
5+
**
6+
** $CISCO_BEGIN_LICENSE:LGPL$
7+
**
8+
** GNU Lesser General Public License Usage
9+
** Alternatively, this file may be used under the terms of the GNU Lesser
10+
** General Public License version 2.1 as published by the Free Software
11+
** Foundation and appearing in the file LICENSE.LGPL included in the
12+
** packaging of this file. Please review the following information to
13+
** ensure the GNU Lesser General Public License version 2.1 requirements
14+
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
15+
**
16+
** $CISCO_END_LICENSE$
17+
**
18+
****************************************************************************/
19+
20+
#include "Headers.h"
21+
22+
#ifndef QT_NO_SAMPLES
23+
#include "Samples.h"
24+
#endif
25+
26+
#ifndef QT_NO_VNC
27+
void InitVNCClient();
28+
#endif // QT_NO_VNC
29+
#ifndef QT_NO_UINPUT
30+
void InitUInputClient();
31+
#endif // QT_NO_UINPUT
32+
33+
int wd_setup(int argc, char *argv[])
34+
{
35+
webdriver::ViewRunner::RegisterCustomRunner<webdriver::QViewRunner>();
36+
37+
webdriver::SessionLifeCycleActions::RegisterCustomLifeCycleActions<webdriver::QSessionLifeCycleActions>();
38+
39+
webdriver::ViewTransitionManager::SetURLTransitionAction(new webdriver::URLTransitionAction_CloseOldView());
40+
41+
/* Configure widget views */
42+
webdriver::ViewCreator* widgetCreator = new webdriver::QWidgetViewCreator();
43+
44+
/*
45+
Register view classes (here some test classes) that can be created by WebDriver.
46+
Creation can be triggered by client side request like wd.get("qtwidget://WindowTestWidget");
47+
*/
48+
widgetCreator->RegisterViewClass<QWidget>("QWidget");
49+
#ifndef QT_NO_SAMPLES
50+
widgetCreator->RegisterViewClass<WindowTestWidget>("WindowTestWidget");
51+
widgetCreator->RegisterViewClass<ClickTestWidget>("ClickTestWidget");
52+
widgetCreator->RegisterViewClass<ElementAttributeTestWidget>("ElementAttributeTestWidget");
53+
widgetCreator->RegisterViewClass<FindingTestWidget>("FindingTestWidget");
54+
widgetCreator->RegisterViewClass<CoordinatesTestWidget>("CoordinatesTestWidget");
55+
widgetCreator->RegisterViewClass<ClickScrollingTestWidget>("ClickScrollingTestWidget");
56+
widgetCreator->RegisterViewClass<ElementSelectingTestWidget>("ElementSelectingTestWidget");
57+
widgetCreator->RegisterViewClass<TypingTestWidget>("TypingTestWidget");
58+
widgetCreator->RegisterViewClass<BasicKeyboardInterfaceTestWidget>("BasicKeyboardInterfaceTestWidget");
59+
widgetCreator->RegisterViewClass<TextHandlingTestWidget>("TextHandlingTestWidget");
60+
widgetCreator->RegisterViewClass<FormHandlingTestWidget>("FormHandlingTestWidget");
61+
widgetCreator->RegisterViewClass<XPathElementFindingTestWidget>("XPathElementFindingTestWidget");
62+
widgetCreator->RegisterViewClass<StaleElementReferenceTestWidget>("StaleElementReferenceTestWidget");
63+
widgetCreator->RegisterViewClass<VisibilityTestWidget>("VisibilityTestWidget");
64+
widgetCreator->RegisterViewClass<BasicMouseInterfaceTestWidget>("BasicMouseInterfaceTestWidget");
65+
widgetCreator->RegisterViewClass<TouchTestWidget>("TouchTestWidget");
66+
widgetCreator->RegisterViewClass<MenuTestWidget>("MenuTestWidget");
67+
#if (QT_VERSION < QT_VERSION_CHECK(5, 0, 0))
68+
widgetCreator->RegisterViewClass<WindowWithDeclarativeViewTestWidget>("WindowWithDeclarativeViewTestWidget");
69+
#endif
70+
71+
#if (1 == WD_ENABLE_PLAYER) && (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
72+
widgetCreator->RegisterViewClass<VideoTestWidget>("VideoTestWidget");
73+
#endif //WD_ENABLE_PLAYER
74+
#endif // QT_NO_SAMPLES
75+
76+
#if (WD_ENABLE_WEB_VIEW == 1)
77+
/* Configure web views */
78+
webdriver::ViewCreator* webCreator = new webdriver::QWebViewCreator();
79+
webCreator->RegisterViewClass<QWebViewExt>("QWebViewExt");
80+
webdriver::ViewFactory::GetInstance()->AddViewCreator(webCreator);
81+
82+
/* Configure WebView support */
83+
webdriver::ViewEnumerator::AddViewEnumeratorImpl(new webdriver::WebViewEnumeratorImpl());
84+
webdriver::ViewCmdExecutorFactory::GetInstance()->AddViewCmdExecutorCreator(new webdriver::QWebViewCmdExecutorCreator());
85+
86+
/* Configure GraphicsWebView support */
87+
webdriver::ViewEnumerator::AddViewEnumeratorImpl(new webdriver::GraphicsWebViewEnumeratorImpl());
88+
webdriver::ViewCmdExecutorFactory::GetInstance()->AddViewCmdExecutorCreator(new webdriver::GraphicsWebViewCmdExecutorCreator());
89+
90+
#ifndef QT_NO_SAMPLES
91+
/* Register som test classes */
92+
widgetCreator->RegisterViewClass<GraphicsWebViewTestWindows>("GraphicsWebViewTestWindows");
93+
widgetCreator->RegisterViewClass<WindowWithEmbeddedViewTestWidget>("WindowWithEmbeddedViewTestWidget");
94+
widgetCreator->RegisterViewClass<WidgetAndWebViewTestWindows>("WidgetAndWebViewTestWindows");
95+
96+
97+
#if (QT_VERSION < QT_VERSION_CHECK(5, 0, 0))
98+
widgetCreator->RegisterViewClass<WindowWithSeparatedDeclarativeAndWebViewsTestWidget>("WindowWithSeparatedDeclarativeAndWebViewsTestWidget");
99+
#endif // QT_VERSION
100+
#endif // QT_NO_SAMPLES
101+
#endif // WD_ENABLE_WEB_VIEW
102+
103+
#ifndef QT_NO_QML
104+
#if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
105+
// Quick2 extension
106+
webdriver::ViewCreator* qmlCreator = new webdriver::Quick2ViewCreator();
107+
qmlCreator->RegisterViewClass<QQuickView>("QQuickView");
108+
webdriver::ViewFactory::GetInstance()->AddViewCreator(qmlCreator);
109+
110+
webdriver::ViewEnumerator::AddViewEnumeratorImpl(new webdriver::Quick2ViewEnumeratorImpl());
111+
112+
webdriver::ViewCmdExecutorFactory::GetInstance()->AddViewCmdExecutorCreator(new webdriver::Quick2ViewCmdExecutorCreator());
113+
#else
114+
// Quick1 extension
115+
webdriver::ViewCreator* qmlCreator = new webdriver::QQmlViewCreator();
116+
qmlCreator->RegisterViewClass<QDeclarativeView>("QDeclarativeView");
117+
webdriver::ViewFactory::GetInstance()->AddViewCreator(qmlCreator);
118+
119+
webdriver::ViewEnumerator::AddViewEnumeratorImpl(new webdriver::QmlViewEnumeratorImpl());
120+
121+
webdriver::ViewCmdExecutorFactory::GetInstance()->AddViewCmdExecutorCreator(new webdriver::QQmlViewCmdExecutorCreator());
122+
123+
#if (WD_ENABLE_WEB_VIEW == 1)
124+
qmlRegisterType<QDeclarativeWebSettings>();
125+
qmlRegisterType<QDeclarativeWebView>("CiscoQtWebKit", 1, 0, "CiscoWebView");
126+
qmlRegisterType<QDeclarativeWebView>("CiscoQtWebKit", 1, 1, "CiscoWebView");
127+
qmlRegisterRevision<QDeclarativeWebView, 0>("CiscoQtWebKit", 1, 0);
128+
qmlRegisterRevision<QDeclarativeWebView, 1>("CiscoQtWebKit", 1, 1);
129+
//webdriver::ViewEnumerator::AddViewEnumeratorImpl(new webdriver::QmlWebViewEnumeratorImpl());
130+
//webdriver::ViewCmdExecutorFactory::GetInstance()->AddViewCmdExecutorCreator(new webdriver::QmlWebViewCmdExecutorCreator());
131+
#endif
132+
133+
#endif
134+
#endif //QT_NO_QML
135+
/* Add widget creator last so that it deos not conflict with webview creator (QWebView is a subclass of QWidget)*/
136+
webdriver::ViewFactory::GetInstance()->AddViewCreator(widgetCreator);
137+
138+
webdriver::ViewEnumerator::AddViewEnumeratorImpl(new webdriver::WidgetViewEnumeratorImpl());
139+
140+
webdriver::ViewCmdExecutorFactory::GetInstance()->AddViewCmdExecutorCreator(new webdriver::QWidgetViewCmdExecutorCreator());
141+
142+
CommandLine cmd_line(CommandLine::NO_PROGRAM);
143+
#if defined(OS_WIN)
144+
cmd_line.ParseFromString(::GetCommandLineW());
145+
#elif defined(OS_POSIX)
146+
cmd_line.InitFromArgv(argc, argv);
147+
#endif
148+
149+
#ifndef QT_NO_SAMPLES
150+
#if (1 == WD_ENABLE_PLAYER) && (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
151+
// check if --test_data_folder CL argument is present
152+
std::string testDataFolderSwitch = "test_data_folder";
153+
154+
if (cmd_line.HasSwitch(testDataFolderSwitch)) {
155+
testDataFolder = cmd_line.GetSwitchValueASCII(testDataFolderSwitch);
156+
} else {
157+
testDataFolder = "./";
158+
}
159+
160+
std::cout << "Using "<< testDataFolder << " as test data folder" << std::endl;
161+
#endif // WD_ENABLE_PLAYER
162+
#endif // QT_NO_SAMPLES
163+
164+
#if defined(OS_WIN)
165+
#if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
166+
system("qtenv2.bat vsvars");
167+
#else //QT_VERSION
168+
system("qtvars.bat vsvars");
169+
#endif //QT_VERSION
170+
#endif //OS_WIN
171+
172+
/* Parse command line */
173+
webdriver::Server* wd_server = webdriver::Server::GetInstance();
174+
if (0 != wd_server->Configure(cmd_line)) {
175+
std::cout << "Error while configuring WD server, exiting..." << std::endl;
176+
return 1;
177+
}
178+
179+
/* Example how to add a custom command */
180+
webdriver::RouteTable *routeTableWithShutdownCommand = new webdriver::RouteTable(wd_server->GetRouteTable());
181+
const char shutdownCommandRoute[] = "/-cisco-shutdown";
182+
routeTableWithShutdownCommand->Add<webdriver::ShutdownCommand>(shutdownCommandRoute);
183+
routeTableWithShutdownCommand->Add<webdriver::ShutdownCommand>(webdriver::CommandRoutes::kShutdown);
184+
wd_server->SetRouteTable(routeTableWithShutdownCommand);
185+
186+
/* Optional VNC an user input support */
187+
InitVNCClient();
188+
InitUInputClient();
189+
190+
/* Start webdriver */
191+
int startError = wd_server->Start();
192+
if (startError){
193+
std::cout << "Error while starting server, errorCode " << startError << std::endl;
194+
return startError;
195+
}
196+
197+
return startError;
198+
}
199+
200+
#ifndef QT_NO_VNC
201+
void InitVNCClient() {
202+
// start VNC module
203+
CommandLine cmdLine = webdriver::Server::GetInstance()->GetCommandLine();
204+
if (cmdLine.HasSwitch(webdriver::Switches::kVNCLogin))
205+
{
206+
QString address = "127.0.0.1";
207+
QString login = "anonymous";
208+
QString *password = new QString();
209+
QString port = "5900";
210+
211+
QString loginInfo = cmdLine.GetSwitchValueASCII(webdriver::Switches::kVNCLogin).c_str();
212+
VNCClient::SplitVncLoginParameters(loginInfo, &login, password, &address, &port);
213+
214+
VNCClient *client = VNCClient::getInstance();
215+
if (!client->isReady())
216+
{
217+
if (password->isEmpty())
218+
client->Init(address, port.toInt());
219+
else
220+
client->Init(address, port.toInt(), password);
221+
}
222+
223+
WDEventDispatcher::getInstance()->add(new VNCEventDispatcher(client));
224+
}
225+
}
226+
#endif // QT_NO_VNC
227+
228+
#ifndef QT_NO_UINPUT
229+
void InitUInputClient() {
230+
// start user input device
231+
#ifdef OS_LINUX
232+
CommandLine cmdLine = webdriver::Server::GetInstance()->GetCommandLine();
233+
if (cmdLine.HasSwitch(webdriver::Switches::kUserInputDevice))
234+
{
235+
UInputManager *manager = UInputManager::getInstance();
236+
if (!manager->isReady())
237+
{
238+
manager->registerUinputDevice();
239+
}
240+
241+
WDEventDispatcher::getInstance()->add(new UInputEventDispatcher(manager));
242+
}
243+
#endif // OS_LINUX
244+
}
245+
#endif // QT_NO_UINPUT

0 commit comments

Comments
 (0)