Skip to content

refactor: component tree dead code #1403

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 8 commits into from
May 3, 2023
Merged

Conversation

mdjastrzebski
Copy link
Member

@mdjastrzebski mdjastrzebski commented May 2, 2023

Summary

Scope:

  • Migrate away for composite based checks in component-tree.ts
  • Add Switch to detectHostComponentNames and React Native API assumptions tests
  • Remove unused component-tree.ts functions: getHostSelf, getCompositeParentOfType, isHostElementForType.

Test plan

N/A

@mdjastrzebski mdjastrzebski requested review from AugustinLF, MattAgn, pierrezimmermannbam and thymikee and removed request for AugustinLF May 2, 2023 21:41
@MattAgn
Copy link
Collaborator

MattAgn commented May 3, 2023

Nice cleaning! Are you on a refactoring streak? 😄

@codecov
Copy link

codecov bot commented May 3, 2023

Codecov Report

Patch coverage: 100.00% and project coverage change: -0.06 ⚠️

Comparison is base (01af9e7) 96.85% compared to head (d030a18) 96.79%.

❗ Current head d030a18 differs from pull request most recent head fa3b964. Consider uploading reports for the commit fa3b964 to get more accurate results

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1403      +/-   ##
==========================================
- Coverage   96.85%   96.79%   -0.06%     
==========================================
  Files          51       51              
  Lines        3461     3404      -57     
  Branches      519      504      -15     
==========================================
- Hits         3352     3295      -57     
  Misses        109      109              
Impacted Files Coverage Δ
src/config.ts 100.00% <100.00%> (ø)
src/helpers/accessiblity.ts 100.00% <100.00%> (ø)
src/helpers/component-tree.ts 100.00% <100.00%> (ø)
src/helpers/host-component-names.tsx 100.00% <100.00%> (ø)

☔ View full report in Codecov by Sentry.
📢 Do you have feedback about the report comment? Let us know in this issue.

@mdjastrzebski
Copy link
Member Author

@MattAgn I've managed to find some time and energy to work on User Event type() and I've noticed some code in need for cleanup 🧹🧹🧹

@mdjastrzebski mdjastrzebski merged commit 72e3133 into main May 3, 2023
@mdjastrzebski mdjastrzebski deleted the refactor/component-tree-code branch May 3, 2023 07:55
@MattAgn
Copy link
Collaborator

MattAgn commented May 3, 2023

Oh great news! On my end, I struggle to find time for fireEvent.press 😅 fortunately @pierrezimmermannbam is here!

@mdjastrzebski
Copy link
Member Author

This PR has been released in v12.1.2 🚀

@BillyBlaze
Copy link

BillyBlaze commented May 19, 2023

@mdjastrzebski thanks for the work.

I'm looking into our dependency update and why the tests are failing from 12.1.1 to 12.1.2. It seems that the newly introduced Switch component is generating an useState hook and that is messing up tests that spies on the useState. Is this by design? and if yes, is this not a breaking change since everyone that spies on the useState suddenly gets more calls and receives a value { value: null } instead of what their useState value should be? It took me some time to figure out that the Switch component was emitting this value and that this was generated in host-component-names.

@mdjastrzebski
Copy link
Member Author

mdjastrzebski commented May 20, 2023

@BillyBlaze thank you for reaching out with your issue. The root cause why RNTL internal code change caused test failures for you is that your test relied on spying on global React primitives, like useState. This way any other component change, in RNTL, React Native or even 3rd party library, could potentially cause test failures.

We do not consider this to be a breaking change, as our public API remained the same and we do not recommend such testing patterns as they result in fragile testing code that is dependent on tested components internal details rather than public API.

Per our guiding principle:

The more your tests resemble the way your software is used, the more confidence they can give you.

The recommended way is to use the public interface: props, event handlers and rendered output of your components to detect expected state behaviors and state changes instead of internal implementation details like internal state, etc.

I hope that clarifies our stance in this regards and allows you to write more resilient tests.

hyochan referenced this pull request in hyochan/react-native-iap Jun 22, 2023
….2 (#2445)

[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
|
[@testing-library/react-native](https://callstack.github.io/react-native-testing-library)
([source](https://togithub.com/callstack/react-native-testing-library))
| [`12.0.1` ->
`12.1.2`](https://renovatebot.com/diffs/npm/@testing-library%2freact-native/12.0.1/12.1.2)
|
[![age](https://badges.renovateapi.com/packages/npm/@testing-library%2freact-native/12.1.2/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/npm/@testing-library%2freact-native/12.1.2/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/npm/@testing-library%2freact-native/12.1.2/compatibility-slim/12.0.1)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/npm/@testing-library%2freact-native/12.1.2/confidence-slim/12.0.1)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>callstack/react-native-testing-library</summary>

###
[`v12.1.2`](https://togithub.com/callstack/react-native-testing-library/releases/tag/v12.1.2)

[Compare
Source](https://togithub.com/callstack/react-native-testing-library/compare/v12.1.1...v12.1.2)

#### What's Changed

#### Fixes

- fix: pointer events evaluation by
[@&#8203;mdjastrzebski](https://togithub.com/mdjastrzebski) in
[https://github.com/callstack/react-native-testing-library/pull/1395](https://togithub.com/callstack/react-native-testing-library/pull/1395)
- fix: non-editable wrapped TextInput events by
[@&#8203;TMaszko](https://togithub.com/TMaszko) in
[https://github.com/callstack/react-native-testing-library/pull/1385](https://togithub.com/callstack/react-native-testing-library/pull/1385)
- fix: support `onXxx` event name for TextInput event checks by
[@&#8203;mdjastrzebski](https://togithub.com/mdjastrzebski) in
[https://github.com/callstack/react-native-testing-library/pull/1404](https://togithub.com/callstack/react-native-testing-library/pull/1404)

#### Docs, Chores, etc

- docs: add config example for pnpm by
[@&#8203;yjose](https://togithub.com/yjose) in
[https://github.com/callstack/react-native-testing-library/pull/1400](https://togithub.com/callstack/react-native-testing-library/pull/1400)
- chore: move/remove deprecation functions by
[@&#8203;mdjastrzebski](https://togithub.com/mdjastrzebski) in
[https://github.com/callstack/react-native-testing-library/pull/1402](https://togithub.com/callstack/react-native-testing-library/pull/1402)
- refactor: component tree dead code by
[@&#8203;mdjastrzebski](https://togithub.com/mdjastrzebski) in
[https://github.com/callstack/react-native-testing-library/pull/1403](https://togithub.com/callstack/react-native-testing-library/pull/1403)
- refactor: `fireEvent` cleanup by
[@&#8203;mdjastrzebski](https://togithub.com/mdjastrzebski) in
[https://github.com/callstack/react-native-testing-library/pull/1401](https://togithub.com/callstack/react-native-testing-library/pull/1401)

#### New Contributors

- [@&#8203;yjose](https://togithub.com/yjose) made their first
contribution in
[https://github.com/callstack/react-native-testing-library/pull/1400](https://togithub.com/callstack/react-native-testing-library/pull/1400)
👏
- [@&#8203;TMaszko](https://togithub.com/TMaszko) made their first
contribution in
[https://github.com/callstack/react-native-testing-library/pull/1385](https://togithub.com/callstack/react-native-testing-library/pull/1385)
👏

**Full Changelog**:
callstack/react-native-testing-library@v12.1.1...v12.1.2

###
[`v12.1.1`](https://togithub.com/callstack/react-native-testing-library/releases/tag/v12.1.1)

[Compare
Source](https://togithub.com/callstack/react-native-testing-library/compare/v12.1.0...v12.1.1)

#### What's Changed

#### Fixes

- fix: remove incorrect dependencies by
[@&#8203;mdjastrzebski](https://togithub.com/mdjastrzebski) in
[https://github.com/callstack/react-native-testing-library/pull/1399](https://togithub.com/callstack/react-native-testing-library/pull/1399)

**Full Changelog**:
callstack/react-native-testing-library@v12.1.0...v12.1.1

###
[`v12.1.0`](https://togithub.com/callstack/react-native-testing-library/releases/tag/v12.1.0)

[Compare
Source](https://togithub.com/callstack/react-native-testing-library/compare/v12.0.1...v12.1.0)

#### What's Changed

##### Improvements

- feat: Render element tree in query error messages by
[@&#8203;stevehanson](https://togithub.com/stevehanson) in
[https://github.com/callstack/react-native-testing-library/pull/1378](https://togithub.com/callstack/react-native-testing-library/pull/1378)

##### Bugfixes

- Proper stack trace for findBy\* and findAllBy\* queries by
[@&#8203;mdjastrzebski](https://togithub.com/mdjastrzebski) in
[https://github.com/callstack/react-native-testing-library/pull/1394](https://togithub.com/callstack/react-native-testing-library/pull/1394)

#### New Contributors

- [@&#8203;stevehanson](https://togithub.com/stevehanson) made their
first contributions in
[#&#8203;1377](https://togithub.com/callstack/react-native-testing-library/issues/1377),
[#&#8203;1378](https://togithub.com/callstack/react-native-testing-library/issues/1378)
and
[#&#8203;1390](https://togithub.com/callstack/react-native-testing-library/issues/1390)
👏

##### Chores, docs, deps, etc

- Fix broken link in contributing.md by
[@&#8203;stevehanson](https://togithub.com/stevehanson) in
[https://github.com/callstack/react-native-testing-library/pull/1377](https://togithub.com/callstack/react-native-testing-library/pull/1377)
- chore: update deps 2023-04-04 by
[@&#8203;mdjastrzebski](https://togithub.com/mdjastrzebski) in
[https://github.com/callstack/react-native-testing-library/pull/1380](https://togithub.com/callstack/react-native-testing-library/pull/1380)
- Fix typo in "derived" in v12 migration guide by
[@&#8203;CodingItWrong](https://togithub.com/CodingItWrong) in
[https://github.com/callstack/react-native-testing-library/pull/1376](https://togithub.com/callstack/react-native-testing-library/pull/1376)
- chore: fix migration guide role prop naming by
[@&#8203;mdjastrzebski](https://togithub.com/mdjastrzebski) in
[https://github.com/callstack/react-native-testing-library/pull/1382](https://togithub.com/callstack/react-native-testing-library/pull/1382)
- fix: "Edit this Page" link in docs results in 404 by
[@&#8203;stevehanson](https://togithub.com/stevehanson) in
[https://github.com/callstack/react-native-testing-library/pull/1390](https://togithub.com/callstack/react-native-testing-library/pull/1390)
- refactor: remove stale tests by
[@&#8203;mdjastrzebski](https://togithub.com/mdjastrzebski) in
[https://github.com/callstack/react-native-testing-library/pull/1392](https://togithub.com/callstack/react-native-testing-library/pull/1392)
- chore: experiments app by
[@&#8203;mdjastrzebski](https://togithub.com/mdjastrzebski) in
[https://github.com/callstack/react-native-testing-library/pull/1391](https://togithub.com/callstack/react-native-testing-library/pull/1391)

**Full Changelog**:
callstack/react-native-testing-library@v12.0.1...v12.1.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/dooboolab-community/react-native-iap).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS45OC40IiwidXBkYXRlZEluVmVyIjoiMzUuMTMxLjAiLCJ0YXJnZXRCcmFuY2giOiJtYWluIn0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants