Skip to content

Commit 60cfb19

Browse files
author
hekra
committed
move setup to headers
1 parent 132d2e4 commit 60cfb19

File tree

2 files changed

+210
-219
lines changed

2 files changed

+210
-219
lines changed

src/Test/Headers.h

Lines changed: 209 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,4 +82,212 @@
8282
#include "extension_qt/uinput_manager.h"
8383
#include "webdriver_switches.h"
8484

85-
int wd_setup(int argc, char *argv[]);
85+
#ifndef QT_NO_SAMPLES
86+
#include "Samples.h"
87+
#endif
88+
89+
int wd_setup(int argc, char *argv[])
90+
{
91+
webdriver::ViewRunner::RegisterCustomRunner<webdriver::QViewRunner>();
92+
93+
webdriver::SessionLifeCycleActions::RegisterCustomLifeCycleActions<webdriver::QSessionLifeCycleActions>();
94+
95+
webdriver::ViewTransitionManager::SetURLTransitionAction(new webdriver::URLTransitionAction_CloseOldView());
96+
97+
/* Configure widget views */
98+
webdriver::ViewCreator* widgetCreator = new webdriver::QWidgetViewCreator();
99+
webdriver::ViewCreator* webCreator = NULL;
100+
webdriver::ViewCreator* qmlCreator = NULL;
101+
/*
102+
Register view classes (here some test classes) that can be created by WebDriver.
103+
Creation can be triggered by client side request like wd.get("qtwidget://WindowTestWidget");
104+
See https://github.com/cisco-open-source/qtwebdriver/wiki/Hybridity-And-View-Management
105+
*/
106+
widgetCreator->RegisterViewClass<QWidget>("QWidget");
107+
108+
#if (WD_ENABLE_WEB_VIEW == 1)
109+
/* Configure web views */
110+
webCreator = new webdriver::QWebViewCreator();
111+
webCreator->RegisterViewClass<QWebViewExt>("QWebViewExt");
112+
webdriver::ViewFactory::GetInstance()->AddViewCreator(webCreator);
113+
114+
/* Configure WebView support */
115+
webdriver::ViewEnumerator::AddViewEnumeratorImpl(new webdriver::WebViewEnumeratorImpl());
116+
webdriver::ViewCmdExecutorFactory::GetInstance()->AddViewCmdExecutorCreator(new webdriver::QWebViewCmdExecutorCreator());
117+
118+
/* Configure GraphicsWebView support */
119+
webdriver::ViewEnumerator::AddViewEnumeratorImpl(new webdriver::GraphicsWebViewEnumeratorImpl());
120+
webdriver::ViewCmdExecutorFactory::GetInstance()->AddViewCmdExecutorCreator(new webdriver::GraphicsWebViewCmdExecutorCreator());
121+
#endif // WD_ENABLE_WEB_VIEW
122+
123+
#ifndef QT_NO_QML
124+
#if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
125+
// Quick2 extension
126+
qmlCreator = new webdriver::Quick2ViewCreator();
127+
qmlCreator->RegisterViewClass<QQuickView>("QQuickView");
128+
webdriver::ViewFactory::GetInstance()->AddViewCreator(qmlCreator);
129+
webdriver::ViewEnumerator::AddViewEnumeratorImpl(new webdriver::Quick2ViewEnumeratorImpl());
130+
webdriver::ViewCmdExecutorFactory::GetInstance()->AddViewCmdExecutorCreator(new webdriver::Quick2ViewCmdExecutorCreator());
131+
#else
132+
// Quick1 extension
133+
qmlCreator = new webdriver::QQmlViewCreator();
134+
qmlCreator->RegisterViewClass<QDeclarativeView>("QDeclarativeView");
135+
webdriver::ViewFactory::GetInstance()->AddViewCreator(qmlCreator);
136+
webdriver::ViewEnumerator::AddViewEnumeratorImpl(new webdriver::QmlViewEnumeratorImpl());
137+
webdriver::ViewCmdExecutorFactory::GetInstance()->AddViewCmdExecutorCreator(new webdriver::QQmlViewCmdExecutorCreator());
138+
139+
#if (WD_ENABLE_WEB_VIEW == 1)
140+
qmlRegisterType<QDeclarativeWebSettings>();
141+
qmlRegisterType<QDeclarativeWebView>("CiscoQtWebKit", 1, 0, "CiscoWebView");
142+
qmlRegisterType<QDeclarativeWebView>("CiscoQtWebKit", 1, 1, "CiscoWebView");
143+
qmlRegisterRevision<QDeclarativeWebView, 0>("CiscoQtWebKit", 1, 0);
144+
qmlRegisterRevision<QDeclarativeWebView, 1>("CiscoQtWebKit", 1, 1);
145+
#endif
146+
147+
#endif
148+
#endif //QT_NO_QML
149+
/* Add widget creator last so that it deos not conflict with webview creator (QWebView is a subclass of QWidget)*/
150+
webdriver::ViewFactory::GetInstance()->AddViewCreator(widgetCreator);
151+
webdriver::ViewEnumerator::AddViewEnumeratorImpl(new webdriver::WidgetViewEnumeratorImpl());
152+
webdriver::ViewCmdExecutorFactory::GetInstance()->AddViewCmdExecutorCreator(new webdriver::QWidgetViewCmdExecutorCreator());
153+
154+
CommandLine cmd_line(CommandLine::NO_PROGRAM);
155+
#if defined(OS_WIN)
156+
cmd_line.ParseFromString(::GetCommandLineW());
157+
#elif defined(OS_POSIX)
158+
cmd_line.InitFromArgv(argc, argv);
159+
#endif
160+
161+
#ifndef QT_NO_SAMPLES
162+
/* optional samples setup */
163+
wd_samples_setup(widgetCreator, webCreator, qmlCreator, cmd_line);
164+
#endif // QT_NO_SAMPLES
165+
166+
#if defined(OS_WIN)
167+
#if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
168+
system("qtenv2.bat vsvars");
169+
#else //QT_VERSION
170+
system("qtvars.bat vsvars");
171+
#endif //QT_VERSION
172+
#endif //OS_WIN
173+
174+
/* Parse command line */
175+
webdriver::Server* wd_server = webdriver::Server::GetInstance();
176+
if (0 != wd_server->Configure(cmd_line)) {
177+
std::cout << "Error while configuring WD server, exiting..." << std::endl;
178+
return 1;
179+
}
180+
181+
/* Example how to add a custom command */
182+
webdriver::RouteTable *routeTableWithShutdownCommand = new webdriver::RouteTable(wd_server->GetRouteTable());
183+
const char shutdownCommandRoute[] = "/-cisco-shutdown";
184+
routeTableWithShutdownCommand->Add<webdriver::ShutdownCommand>(shutdownCommandRoute);
185+
routeTableWithShutdownCommand->Add<webdriver::ShutdownCommand>(webdriver::CommandRoutes::kShutdown);
186+
wd_server->SetRouteTable(routeTableWithShutdownCommand);
187+
188+
/* check for VNC input support */
189+
if (cmd_line.HasSwitch(webdriver::Switches::kVNCLogin))
190+
{
191+
QString address = "127.0.0.1";
192+
QString login = "anonymous";
193+
QString *password = new QString();
194+
QString port = "5900";
195+
196+
QString loginInfo = cmd_line.GetSwitchValueASCII(webdriver::Switches::kVNCLogin).c_str();
197+
VNCClient::SplitVncLoginParameters(loginInfo, &login, password, &address, &port);
198+
199+
VNCClient *client = VNCClient::getInstance();
200+
if (!client->isReady())
201+
{
202+
if (password->isEmpty())
203+
client->Init(address, port.toInt());
204+
else
205+
client->Init(address, port.toInt(), password);
206+
}
207+
208+
WDEventDispatcher::getInstance()->add(new VNCEventDispatcher(client));
209+
}
210+
211+
/* check for Linux UInput input support */
212+
#ifdef OS_LINUX
213+
if (cmd_line.HasSwitch(webdriver::Switches::kUserInputDevice))
214+
{
215+
UInputManager *manager = UInputManager::getInstance();
216+
if (!manager->isReady())
217+
{
218+
manager->registerUinputDevice();
219+
}
220+
221+
WDEventDispatcher::getInstance()->add(new UInputEventDispatcher(manager));
222+
}
223+
#endif // OS_LINUX
224+
225+
/* Start webdriver */
226+
int startError = wd_server->Start();
227+
if (startError){
228+
std::cout << "Error while starting server, errorCode " << startError << std::endl;
229+
return startError;
230+
}
231+
232+
return startError;
233+
}
234+
235+
#ifndef QT_NO_SAMPLES
236+
int wd_samples_setup(webdriver::ViewCreator* widgetCreator,
237+
webdriver::ViewCreator* webCreator,
238+
webdriver::ViewCreator* qmlCreator,
239+
CommandLine &cmd_line)
240+
{
241+
if(widgetCreator != NULL)
242+
{
243+
widgetCreator->RegisterViewClass<WindowTestWidget>("WindowTestWidget");
244+
widgetCreator->RegisterViewClass<ClickTestWidget>("ClickTestWidget");
245+
widgetCreator->RegisterViewClass<ElementAttributeTestWidget>("ElementAttributeTestWidget");
246+
widgetCreator->RegisterViewClass<FindingTestWidget>("FindingTestWidget");
247+
widgetCreator->RegisterViewClass<CoordinatesTestWidget>("CoordinatesTestWidget");
248+
widgetCreator->RegisterViewClass<ClickScrollingTestWidget>("ClickScrollingTestWidget");
249+
widgetCreator->RegisterViewClass<ElementSelectingTestWidget>("ElementSelectingTestWidget");
250+
widgetCreator->RegisterViewClass<TypingTestWidget>("TypingTestWidget");
251+
widgetCreator->RegisterViewClass<BasicKeyboardInterfaceTestWidget>("BasicKeyboardInterfaceTestWidget");
252+
widgetCreator->RegisterViewClass<TextHandlingTestWidget>("TextHandlingTestWidget");
253+
widgetCreator->RegisterViewClass<FormHandlingTestWidget>("FormHandlingTestWidget");
254+
widgetCreator->RegisterViewClass<XPathElementFindingTestWidget>("XPathElementFindingTestWidget");
255+
widgetCreator->RegisterViewClass<StaleElementReferenceTestWidget>("StaleElementReferenceTestWidget");
256+
widgetCreator->RegisterViewClass<VisibilityTestWidget>("VisibilityTestWidget");
257+
widgetCreator->RegisterViewClass<BasicMouseInterfaceTestWidget>("BasicMouseInterfaceTestWidget");
258+
widgetCreator->RegisterViewClass<TouchTestWidget>("TouchTestWidget");
259+
widgetCreator->RegisterViewClass<MenuTestWidget>("MenuTestWidget");
260+
#if (QT_VERSION < QT_VERSION_CHECK(5, 0, 0))
261+
widgetCreator->RegisterViewClass<WindowWithDeclarativeViewTestWidget>("WindowWithDeclarativeViewTestWidget");
262+
#endif
263+
264+
#if (1 == WD_ENABLE_PLAYER) && (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
265+
widgetCreator->RegisterViewClass<VideoTestWidget>("VideoTestWidget");
266+
#endif //WD_ENABLE_PLAYER
267+
268+
#if (WD_ENABLE_WEB_VIEW == 1)
269+
/* Register som test classes */
270+
widgetCreator->RegisterViewClass<GraphicsWebViewTestWindows>("GraphicsWebViewTestWindows");
271+
widgetCreator->RegisterViewClass<WindowWithEmbeddedViewTestWidget>("WindowWithEmbeddedViewTestWidget");
272+
widgetCreator->RegisterViewClass<WidgetAndWebViewTestWindows>("WidgetAndWebViewTestWindows");
273+
274+
#if (QT_VERSION < QT_VERSION_CHECK(5, 0, 0))
275+
widgetCreator->RegisterViewClass<WindowWithSeparatedDeclarativeAndWebViewsTestWidget>("WindowWithSeparatedDeclarativeAndWebViewsTestWidget");
276+
#endif // QT_VERSION
277+
#endif // WD_ENABLE_WEB_VIEW
278+
}
279+
#if (1 == WD_ENABLE_PLAYER) && (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
280+
// check if --test_data_folder CL argument is present
281+
std::string testDataFolderSwitch = "test_data_folder";
282+
283+
if (cmd_line.HasSwitch(testDataFolderSwitch)) {
284+
testDataFolder = cmd_line.GetSwitchValueASCII(testDataFolderSwitch);
285+
} else {
286+
testDataFolder = "./";
287+
}
288+
289+
std::cout << "Using "<< testDataFolder << " as test data folder" << std::endl;
290+
#endif // WD_ENABLE_PLAYER
291+
return 0;
292+
}
293+
#endif // QT_NO_SAMPLES

0 commit comments

Comments
 (0)