[[PageOutline]] = Running Tests for WebKitGTK+ = == Dependencies == Ensure that you've followed [wiki:BuildingGtk all dependency installation instructions]. If you try to run tests without installing and updating both system and JHBuild (update-webkitgtk-libs) dependencies, it's likely that not all tests will pass. == Layout Tests (Functional Tests) == === Running the Tests === Simply run the `run-webkit-tests` script from the Tools directory. `run-webkit-tests` also supports the `--debug` argument to run the tests with the debug build of WebKitGTK+. {{{ #!sh $ ./Tools/Scripts/run-webkit-tests --gtk [--debug] }}} If you wish to run a single test you can do: {{{ #!sh $ ./Tools/Scripts/run-webkit-tests --gtk fast/forms/plaintext-mode-1.html }}} If you are running tests for WebKit2, remember to add the `-2` flag. {{{ #!sh $ ./Tools/Scripts/run-webkit-tests --gtk -2 fast/forms/plaintext-mode-1.html }}} === Pixel Tests === WebKitGTK+ supports running pixel tests, but they are not enabled by default. To run them simply pass the `-p` argument to `run-webkit-tests`: {{{ #!sh $ ./Tools/Scripts/run-webkit-tests --gtk -p }}} === Running Tests in GDB === For debugging a test it may be useful to run it directly in DumpRenderTree (with gdb): {{{ #!sh $ ./WebKitBuild/Debug/Programs/DumpRenderTree -v LayoutTests/fast/forms/plaintext-mode-1.html }}} With WebKit2, the command is: {{{ #!sh $ TEST_RUNNER_TEST_PLUGIN_PATH= TEST_RUNNER_INJECTED_BUNDLE_FILENAME=WebKitBuild/Debug/lib/libTestRunnerInjectedBundle.so WebKitBuild/Debug/bin/WebKitTestRunner -v LayoutTests/fast/forms/plaintext-mode-1.html }}} === HTTP tests === HTTP functional tests are stored at: {{{ #!sh $ LayoutTests/http/tests/ }}} Obviously, it is needed a local web server for running them. Depending on your distribution, when executing the tests, the `run-webkit-tests` script will launch the needed local web server. The configurations used for the web server can be found at: {{{ #!sh $ LayoutTests/http/conf/ }}} Sometimes, it is useful to change that configuration or to be able to just launch the web server and run some tests and checks manually. Instead of running the specific test through the `run-webkit-tests` script, we can do this calling: {{{ #!sh $ ./Tools/Scripts/run-webkit-httpd }}} == Unit Tests == The GTK+ port includes unit tests. To run the suite: {{{ #!sh $ ./Tools/Scripts/run-gtk-tests [--debug] [--verbose] }}} If you wish to run a single test you can do: {{{ #!sh $ ./Tools/Scripts/run-gtk-tests WebKitBuild/Release/Programs/WebKit2APITests/TestContextMenu }}} == Common Problems == === chroot derived problems === There are some instructions to avoid common problems derived from having a [wiki:WebKitGTK/Chroot#Runningpythonbasedtestwithmultiprocesssupport chroot based working environment]. === Propietary graphics drivers (NVIDIA/AMD) problems === For the tests we use Xvfb + LLVMPipe (software GL in a short), so we expect that libGL is provided by Mesa. However when proprietary graphics drivers are in use on the system, libGL is often provided by the driver. To workaround this problem you can use the environment variable LD_LIBRARY_PATH to point it to where the libGL Mesa libraries are. On a Debian GNU/Linux system this can be achieved as follows: {{{ #!sh LD_LIBRARY_PATH="/usr/lib/mesa-diverted/$(gcc -print-multiarch)" ./Tools/Scripts/run-webkit-tests --gtk [--debug] }}} More information related to the same issue [https://lists.webkit.org/pipermail/webkit-efl/2012-November/000433.html can be found here] === Cannot find DumpRenderTree Running tests prints out the following message: {{{ #!sh DumpRenderTree was not found at /home/dpino/workspace/WebKit/WebKitBuild/Release/Programs/DumpRenderTree }}} You didn't build WebKit with WebKit1 support (`--no-webkit1`). * '''DumpRenderTree''' => WebKit1. * '''WebKitTestRunner''' => WebKit2. == Further information == Further information about the functional and unit tests can be found in the genera documentation pages at the [wiki:WikiStart#LayoutTests main page] of the wiki.