Skip to content

perf(cdk/testing): Improve performance of clicking in unit tests. #20441

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 6 commits into from
Sep 23, 2020

Conversation

mmalerba
Copy link
Contributor

@mmalerba mmalerba commented Aug 28, 2020

This PR changes the semantics of TestElement.click() when called with
no arguments. Rather than guarantee clicking the center of the element,
the location of the click will be up to the particular
HarnessEnvironment. This allows the TestbedHarnessEnvironment to
skip the expensive and often unnecessary calculation to determine the
center of the element.

To replace the old behavior of TestElement.click(), the PR adds a new
signature, TestElement.click('center') that can be used to click the
center of the element. Calling TestElement.click(x, y) to click a
point relative to the top left of the element remains unchanged.

I tested the performance gain of these changes by running a unit test to
click 1000 buttons. Prior to this change it took 3000.2ms, with this
change it took 1842.1ms (38.6% improvement).

@mmalerba mmalerba added P2 The issue is important to a large percentage of users, with a workaround target: minor This PR is targeted for the next minor release labels Aug 28, 2020
@mmalerba mmalerba requested a review from jelbourn August 28, 2020 00:02
@mmalerba mmalerba requested a review from devversion as a code owner August 28, 2020 00:02
@googlebot googlebot added the cla: yes PR author has agreed to Google's Contributor License Agreement label Aug 28, 2020
@mmalerba mmalerba requested a review from a team as a code owner August 28, 2020 00:10
@mmalerba mmalerba requested a review from wagnermaciel August 28, 2020 16:41
@mmalerba mmalerba requested a review from annieyw August 28, 2020 16:41
@mmalerba mmalerba force-pushed the harness-perf-1 branch 2 times, most recently from 5ce644d to 306e60d Compare August 28, 2020 17:29
@mmalerba mmalerba added the action: merge The PR is ready for merge by the caretaker label Sep 3, 2020
Copy link
Contributor

@wagnermaciel wagnermaciel left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

This PR changes the semantics of `TestElement.click()` when called with
no arguments. Rather than guarantee clicking the center of the element,
the location of the click will be up to the particular
`HarnessEnvironment`. This allows the `TestbedHarnessEnvironment` to
skip the expensive and often unnecessary calculation to determine the
center of the element.

To replace the old behavior of `TestElement.click()`, the PR adds a new
signature, `TestElement.click('center')` that can be used to click the
center of the element. Calling `TestElement.click(x, y)` to click a
point relative to the top left of the element remains uncahnged.

I tested the performance gain of these changes by running a unit test to
click 1000 buttons. Prior to this change it took 3000.2ms, with this
change it took 1842.1ms (38.6% improvement).
@annieyw annieyw merged commit 5b725d6 into angular:master Sep 23, 2020
wagnermaciel pushed a commit to wagnermaciel/components that referenced this pull request Sep 24, 2020
…gular#20441)

* perf(cdk/testing): Improve performance of clicking in unit tests.

This PR changes the semantics of `TestElement.click()` when called with
no arguments. Rather than guarantee clicking the center of the element,
the location of the click will be up to the particular
`HarnessEnvironment`. This allows the `TestbedHarnessEnvironment` to
skip the expensive and often unnecessary calculation to determine the
center of the element.

To replace the old behavior of `TestElement.click()`, the PR adds a new
signature, `TestElement.click('center')` that can be used to click the
center of the element. Calling `TestElement.click(x, y)` to click a
point relative to the top left of the element remains uncahnged.

I tested the performance gain of these changes by running a unit test to
click 1000 buttons. Prior to this change it took 3000.2ms, with this
change it took 1842.1ms (38.6% improvement).

* update API golds

* address comments

* allow users to specify location of button click

* fix type of click args

* test(material-experimental/mdc-tabs): fix tab harness
@angular-automatic-lock-bot
Copy link

This issue has been automatically locked due to inactivity.
Please file a new issue if you are encountering a similar or related problem.

Read more about our automatic conversation locking policy.

This action has been performed automatically by a bot.

@angular-automatic-lock-bot angular-automatic-lock-bot bot locked and limited conversation to collaborators Oct 24, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
action: merge The PR is ready for merge by the caretaker cla: yes PR author has agreed to Google's Contributor License Agreement P2 The issue is important to a large percentage of users, with a workaround target: minor This PR is targeted for the next minor release
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants