Testing: GTK+ 4 Reference Manual

## Testing Testing — Utilities for testing GTK+ applications |

## Functions

GtkWidget * | gtk_test_find_label ()
GtkWidget * | gtk_test_find_sibling ()
GtkWidget * | gtk_test_find_widget ()
void | gtk_test_init ()
const GType * | gtk_test_list_all_types ()
void | gtk_test_register_all_types ()
gboolean | gtk_test_widget_send_key ()
void | gtk_test_widget_wait_for_draw ()

## Includes

    #include <gtk/gtk.h>

## Description

## Functions

### gtk_test_find_label ()

    GtkWidget *
    gtk_test_find_label (GtkWidget *widget,
                         const gchar *label_pattern);

This function will search `widget` and all its descendants for a GtkLabel widget with a text string matching `label_pattern` . The `label_pattern` may contain asterisks “*” and question marks “?” as placeholders, `g_pattern_match()` is used for the matching. Note that locales other than "C“ tend to alter (translate” label strings, so this function is genrally only useful in test programs with predetermined locales, see `gtk_test_init()` for more details.

#### Parameters

widget | Valid label or container widget. |
label_pattern | Shell-glob pattern to match a label string. |

#### Returns

a GtkLabel widget if any is found.

[transfer none]

Since: 2.14

### gtk_test_find_sibling ()

    GtkWidget *
    gtk_test_find_sibling (GtkWidget *base_widget,
                           GType widget_type);

This function will search siblings of `base_widget` and siblings of its ancestors for all widgets matching `widget_type` . Of the matching widgets, the one that is geometrically closest to `base_widget` will be returned. The general purpose of this function is to find the most likely “action” widget, relative to another labeling widget. Such as finding a button or text entry widget, given its corresponding label widget.

#### Parameters

base_widget | Valid widget, part of a widget hierarchy |
widget_type | Type of a aearched for sibling widget |

#### Returns

a widget of type `widget_type` if any is found.

[transfer none]

Since: 2.14

### gtk_test_find_widget ()

    GtkWidget *
    gtk_test_find_widget (GtkWidget *widget,
                          const gchar *label_pattern,
                          GType widget_type);

This function will search the descendants of `widget` for a widget of type `widget_type` that has a label matching `label_pattern` next to it. This is most useful for automated GUI testing, e.g. to find the “OK” button in a dialog and synthesize clicks on it. However see `gtk_test_find_label()`, `gtk_test_find_sibling()` and `gtk_test_widget_click()` for possible caveats involving the search of such widgets and synthesizing widget events.

#### Parameters

widget | Container widget, usually a GtkWindow. |
label_pattern | Shell-glob pattern to match a label string. |
widget_type | Type of a aearched for label sibling widget. |

#### Returns

a valid widget if any is found or `NULL`.

[nullable][transfer none]

Since: 2.14

### gtk_test_init ()

    void
    gtk_test_init (int *argcp,
                   char ***argvp,
                   ...);

This function is used to initialize a GTK+ test program.

It will in turn call `g_test_init()` and `gtk_init()` to properly initialize the testing framework and graphical toolkit. It’ll also set the program’s locale to “C” and prevent loading of rc files and Gtk+ modules. This is done to make tets program environments as deterministic as possible.

Like `gtk_init()` and `g_test_init()`, any known arguments will be processed and stripped from `argc` and `argv` .

#### Parameters

argcp | Address of the `argc` parameter of the `main()` function. Changed if any arguments were handled. |
argvp | Address of the `argv` parameter of `main()`. Any parameters understood by `g_test_init()` or `gtk_init()` are stripped before return. | [inout][array length=argcp]
... | currently unused |

Since: 2.14

### gtk_test_list_all_types ()

    const GType *
    gtk_test_list_all_types (guint *n_types);

Return the type ids that have been registered after calling `gtk_test_register_all_types()`.

#### Parameters

n_types | location to store number of types |

#### Returns

0-terminated array of type ids.

[array length=n_types zero-terminated=1][transfer none]

Since: 2.14

### gtk_test_register_all_types ()

    void
    gtk_test_register_all_types (void);

Force registration of all core Gtk+ and Gdk object types. This allowes to refer to any of those object types via `g_type_from_name()` after calling this function.

Since: 2.14

### gtk_test_widget_send_key ()

    gboolean
    gtk_test_widget_send_key (GtkWidget *widget,
                              guint keyval,
                              GdkModifierType modifiers);

This function will generate keyboard press and release events in the middle of the first GdkWindow found that belongs to `widget` . For windowless widgets like GtkButton (which returns `FALSE` from `gtk_widget_get_has_window()`), this will often be an input-only event window. For other widgets, this is usually widget->window. Certain caveats should be considered when using this function, in particular because the mouse pointer is warped to the key press location, see `gdk_test_simulate_key()` for details.

#### Parameters

widget | Widget to generate a key press and release on. |
keyval | A Gdk keyboard value. |
modifiers | Keyboard modifiers the event is setup with. |

#### Returns

whether all actions neccessary for the key event simulation were carried out successfully.

Since: 2.14

### gtk_test_widget_wait_for_draw ()

    void
    gtk_test_widget_wait_for_draw (GtkWidget *widget);

Enters the main loop and waits for `widget` to be “drawn”. In this context that means it waits for the frame clock of `widget` to have run a full styling, layout and drawing cycle.

This function is intended to be used for syncing with actions that depend on `widget` relayouting or on interaction with the display server.

#### Parameters

widget | the widget to wait for |

Since: 3.10

## Types and Values