A computer-implemented method for testing program code corresponding to a graphical user interface by means of a dedicated software tool in interaction with said program code, the program code defining a system under test with a plurality of components displayed on the graphical user interface and respective attributes, wherein a component is used in several tests maintained in said dedicated software tool the method comprising a) providing the program code; b) executing the program code, involving at least one user generated action, and capturing at least one current state of the system under test; c) providing a modified version of the program code, thus providing a modified system under test; d) executing the modified program code and capturing a modified state of the modified system under test, wherein the at least one user generated action is reproduced by the dedicated software tool; e) comparing the current state of the system under test and the modified state of the modified system under test and detecting changes in the system under test, which changes correspond to differences between the current state of the system under test and the modified state of the system under test; f) displaying at least part of the detected changes to a user and soliciting corresponding user input in terms of applying or discarding the displayed changes; and g) applying the detected changes to a corresponding component or discarding the detected changes based on the corresponding user input by automatically updating the current state of the system under test; wherein at least some of the detected changes are grouped according to predetermined characteristics; wherein said current state comprises all of the available components and all of the components' attributes; characterized in that said detected changes are: grouped by component; or grouped by attribute type and are applied to a current state of a plurality of components comprising an element with a given attribute type; or grouped by component type and are applied to a current state of a plurality of components of a given type; or grouped by parent and structure and are applied to a current state of a larger number of components or to all components within a given structure for a given parent; or defined as local changes with respect to a corresponding characteristic of a parent component and grouped for said parent component; wherein each of the grouped changes are displayed as a single difference to be approved or discarded by the user. a) providing the program code; b) executing the program code, involving at least one user generated action, and capturing at least one current state of the system under test; c) providing a modified version of the program code, thus providing a modified system under test; d) executing the modified program code and capturing a modified state of the modified system under test, wherein the at least one user generated action is reproduced by the dedicated software tool; e) comparing the current state of the system under test and the modified state of the modified system under test and detecting changes in the system under test, which changes correspond to differences between the current state of the system under test and the modified state of the system under test; f) displaying at least part of the detected changes to a user and soliciting corresponding user input in terms of applying or discarding the displayed changes; and g) applying the detected changes to a corresponding component or discarding the detected changes based on the corresponding user input by automatically updating the current state of the system under test; wherein at least some of the detected changes are grouped according to predetermined characteristics; wherein said current state comprises all of the available components and all of the components' attributes; characterized in that said detected changes are: grouped by component; or grouped by attribute type and are applied to a current state of a plurality of components comprising an element with a given attribute type; or grouped by component type and are applied to a current state of a plurality of components of a given type; or grouped by parent and structure and are applied to a current state of a larger number of components or to all components within a given structure for a given parent; or defined as local changes with respect to a corresponding characteristic of a parent component and grouped for said parent component; wherein each of the grouped changes are displayed as a single difference to be approved or discarded by the user. grouped by component; or grouped by attribute type and are applied to a current state of a plurality of components comprising an element with a given attribute type; or grouped by component type and are applied to a current state of a plurality of components of a given type; or grouped by parent and structure and are applied to a current state of a larger number of components or to all components within a given structure for a given parent; or defined as local changes with respect to a corresponding characteristic of a parent component and grouped for said parent component; wherein each of the grouped changes are displayed as a single difference to be approved or discarded by the user.