Qt Creator Manual Tests: Qt Quick

QML Editor Result Annotation
Open Qml files, make them invalid & again valid, check that errors are underlined
Indent a big Qml file via “Ctrl-I” automated
Hover over elements, properties, expressions automated
Rename an ID via context menu automated
Trigger Find Usages on an id and property automated
Outline (sidebar) Result Annotation
Navigate to elements / properties by clicking on the item in the outline
Change qml in text, check that Outline updates automated: tst_qml_outline
Drag&Drop elements around in outline, check that text updates
Check/Uncheck ‘Show all Bindings’ in the Filter, outline should update accordingly
Qt Quick Wizards Result Annotation
Create new “Qt Quick Application” through wizard, run application automated
Create new “Qt Quick UI” through wizard, run application automated
Generate “Custom QML Extension Plugin”, compile automated
Application Output Result Annotation
QML errors:
  1. Create a hybrid QML/C++ project (Qt Quick Application). In Projects mode, leave “Shadow build” checked.
  2. Add errors to the qml file.
  3. Save and close the file.
  4. Run this project on the desktop.
    Are the error messages in Application Output clickable when running the app? Do they open the “right”, file (not in shadow build)?
Deploy & run the project with errors on a device. Is the application output still clickable / opens the right file, line, column?
Qt Quick Designer Result Annotation
Open all files in $CREATORDIR/tests/manual/qml/testfiles/testfiles.qmlproject
Create & Rename & Delete states
Test whether F1 works
JavaScript Debugging Result Annotation
Preparation:
  1. Open demos/declarative/samegame/samegame.qmlproject from Qt4’s or qtdeclarative/examples/demos/samegame/samegame.qmlproject from Qt5’s repository.
  2. Place a breakpoint at the first line of the startNewGame() function (samegame.js) which contains executable code (i.e. not (only) a comment).
  3. Start debugging app
Check that first breakpoint is hit when clicking on “New game” , and that the breakpoint looses it’s ‘hour glass’ when hit
Step through startNewGame() function. Check Locals and Watchers update (should display ‘this’, ‘column’, ‘i’, ‘row’). Also try adding watchers, and change content in locals & watchers. (Qml watchers currently do not work, see https://bugreports.qt-project.org/browse/QTBUG-39867 )
Add breakpoint while debugging QML. Does the breakpoint interrupt the program?
Add breakpoint before starting QML Debugger. Does the breakpoint interrupt the program?
While interrupted in a javascript method (with more than one line), step over. Does it go to the next line?
While interrupted in a javascript method that calls another javascript method, step into. Does it enter that method’s definition?
While interrupted in a javascript method, step out. Does execution resume again (or does debugger go back in context)?
Mixed Qml/JavaScript Debugging Result Annotation
Breakpoints:
  1. Create a hybrid QML/C++ project (Qt Quick Application). Leave shadow build on.
  2. Select a Qt Version >= 4.8.0.
  3. Check that ‘Enable QML debugging’ is checked in qmake step on the Build configuration page.
  4. Rebuild.
  5. Enable “C++” and “QML” Debugging under “Debugger Settings” in Run Settings.
  6. Place a breakpoint in main.cpp, before QApplication object is constructed.
  7. Place a breakpoint in the onClicked() handler in main.qml.
  8. Start debugging the project.
    Are breakpoints being hit? Do they open the right (non-shadow-build) file?
Being automated… [codereview.qt-project.org]
Load demos/declarative/minehunt/minehunt.pro from Qt4’s or qtdeclarative/examples/quick/demos/minehunt/minehunt.pro from Qt5’s repository.
Set a breakpoint in Tile.qml, onClicked handler of MouseArea. Is it hit? Is the right file opened in the editor? Click continue
Use the Inspector pane to navigate in the object tree. Are the right files opened in the editor?
Locals and Expressions Result Annotation
Preparation:
  1. Start debugging a Quick UI Application.
  2. Activate the “Select” mode with the arrow button in the debugger toolbar.
  3. Make sure the “Locals and Expressions” view is visible.
  4. Click on an item in the running application.
Is selection highlighted in the editor?
Is the selection in the “Locals and Expressions” view updated?
Note: In a stack of items, lower-level items can be accessed via context menu (right click)
Move mouse cursor to another item. Is selection only highlighted in the running application?
Move text cursor around. Is the selection rectangle in the app updated?
Live Preview Result Annotation
While being in ‘Select’ mode (debugger toolbar), click on an item in the running application. Is the right file in the build directory opened, the right line/column selected?
QML Profiling Result Annotation
Can you record some profiling data (see below)?
Do all tabs show well-formed data/information for the shown events?
Can you turn on and off the tabs by using the context menu and do all (re-)shown tabs still show well-formed data according to the last profiling?
With and without an already profiled app disable profiling by hitting the record button and start running again. Does the widget ‘s content still hold the data of the former profiling (or none if there wasn’t any)?
Start the application and test the record button. It should show the collected data when disabled, and collect new data on already running application when enabled.
According to the time-line:
  • Does it show up tool tips when hovering over painting, compiling, creating, binding and signal handler markers and do they show well-formed information?
  • Does the editor switch to the correct file and line number when clicking on an event (where a location is mentioned)?
  • Can you drag it in both directions from 0 (zero) to the last event’s timestamp?
  • Can you stretch and squeeze it by using the blue bar beneath the time-line and the Zoom in/Zoom out buttons and can you seek the blue bar by dragging it or clicking the “thumbnail” of the time-line?
  • Can you cycle through the events on the time-line by pressing “Jump to previous/next event”?
  • When hovering the time scale at the top: does the tool tip show the correct time under the cursor? Can you set a mark at a timestamp and can you set a time range and is the displayed time correct?
According to the Callees/Caller/Events tab:
  • Does the editor switch to the correct file and line number when clicking on an event (Events) or location (Callees/Caller) that is not marked as “<bytecode>”?
  • Are the relationships between callees and callers correct? (Check at least one, not necessary to be to exhaustive here)
  • Does column sorting work properly?
  • Are the events in the root node of each tab the same? (None missing in one of the views?)
    Note: The “Events” tab intentionally doesn’t show anonymous events.
Debugging/Profiling on Device Result Annotation
You need 4.8 or newer on device
Try to do both QML and mixed debugging on device
Try to profile an app on the device

Recording Profiling Data

Create or open a Qt Quick Application AND a Qml Project ($QTDIR/demos/declarative/minehunt/minehunt.pro and $QTDIR/demos/declarative/samegame/samegame.qmlproject should be adequate). Do the following for each of the projects:

  • Enable QML debugging on the Projects view (might require rebuilding the app)
  • Switch to Analyzer view and press the “Start” button at the QML Profiler widget
  • Generate some events by playing around
  • Press “Stop” at the QML Profiler widget

Categories: