Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
I
interface
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
LuckySwap
interface
Commits
b55680db
Unverified
Commit
b55680db
authored
Jul 28, 2023
by
Zach Pomerantz
Committed by
GitHub
Jul 28, 2023
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
test: deflake and clean universal search (#7034)
parent
136e6820
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
32 additions
and
70 deletions
+32
-70
universal-search.test.ts
cypress/e2e/universal-search.test.ts
+27
-65
SearchBarDropdown.tsx
src/components/NavBar/SearchBarDropdown.tsx
+1
-1
SuggestionRow.tsx
src/components/NavBar/SuggestionRow.tsx
+1
-1
SearchBarDropdown.test.tsx.snap
...ents/NavBar/__snapshots__/SearchBarDropdown.test.tsx.snap
+3
-3
No files found.
cypress/e2e/universal-search.test.ts
View file @
b55680db
import
{
getTestSelector
}
from
'
../utils
'
describe
(
'
Universal search bar
'
,
()
=>
{
describe
(
'
Universal search bar
'
,
()
=>
{
function
openSearch
()
{
function
openSearch
()
{
// can't just type "/" because on mobile it doesn't respond to that
// can't just type "/" because on mobile it doesn't respond to that
...
@@ -6,86 +8,46 @@ describe('Universal search bar', () => {
...
@@ -6,86 +8,46 @@ describe('Universal search bar', () => {
beforeEach
(()
=>
{
beforeEach
(()
=>
{
cy
.
visit
(
'
/
'
)
cy
.
visit
(
'
/
'
)
openSearch
()
})
})
function
getSearchBar
()
{
function
getSearchBar
()
{
return
cy
.
get
(
'
[data-cy="search-bar-input"]
'
).
last
()
return
cy
.
get
(
'
[data-cy="search-bar-input"]
'
).
last
()
}
}
it
(
'
should yield clickable result for regular token or nft collection search term
'
,
()
=>
{
it
(
'
should yield clickable result that is then added to recent searches
'
,
()
=>
{
// Search for uni token by name.
// Search for UNI token by name.
openSearch
()
getSearchBar
().
clear
().
type
(
'
uni
'
)
getSearchBar
().
clear
().
type
(
'
uni
'
)
cy
.
get
(
'
[data-cy="searchbar-token-row-UNI"]
'
)
cy
.
get
(
getTestSelector
(
'
searchbar-token-row-UNI
'
))
.
should
(
'
contain.text
'
,
'
Uniswap
'
)
.
should
(
'
contain.text
'
,
'
Uniswap
'
)
.
and
(
'
contain.text
'
,
'
UNI
'
)
.
and
(
'
contain.text
'
,
'
UNI
'
)
.
and
(
'
contain.text
'
,
'
$
'
)
.
and
(
'
contain.text
'
,
'
$
'
)
.
and
(
'
contain.text
'
,
'
%
'
)
.
and
(
'
contain.text
'
,
'
%
'
)
cy
.
get
(
'
[data-cy="searchbar-token-row-UNI"]
'
).
first
()
.
click
()
.
click
()
cy
.
location
(
'
hash
'
).
should
(
'
equal
'
,
'
#/tokens/ethereum/0x1f9840a85d5af5bf1d1762f925bdaddc4201f984
'
)
cy
.
location
(
'
hash
'
).
should
(
'
equal
'
,
'
#/tokens/ethereum/0x1f9840a85d5af5bf1d1762f925bdaddc4201f984
'
)
})
it
(
'
should go to the selected result when recent results are shown
'
,
// this test is experiencing flake despite being correct, i can see the right value in DOM
// but for some reason cypress doesn't find it, so adding retries for now :/
{
retries
:
{
runMode
:
3
,
openMode
:
3
,
},
},
()
=>
{
// Search for uni token by name.
getSearchBar
().
type
(
'
uni
'
)
cy
.
get
(
'
[data-cy="searchbar-token-row-UNI"]
'
)
// Clear search
getSearchBar
().
clear
()
// Close search
getSearchBar
().
type
(
'
{esc}
'
)
openSearch
()
// Search a different token by name.
getSearchBar
().
type
(
'
eth
'
)
// Validate ETH result now exists.
openSearch
()
cy
.
get
(
'
[data-cy="searchbar-token-row-ETH"]
'
)
cy
.
get
(
getTestSelector
(
'
searchbar-dropdown
'
))
.
contains
(
getTestSelector
(
'
searchbar-dropdown
'
),
'
Recent searches
'
)
// Hit enter
.
find
(
getTestSelector
(
'
searchbar-token-row-UNI
'
))
getSearchBar
().
type
(
'
{enter}
'
)
// Validate we went to ethereum address
cy
.
url
().
should
(
'
contain
'
,
'
tokens/ethereum/NATIVE
'
)
}
)
it
.
skip
(
'
should show recent tokens and popular tokens with empty search term
'
,
()
=>
{
cy
.
get
(
'
[data-cy="magnifying-icon"]
'
)
.
parent
()
.
then
((
$navIcon
)
=>
{
$navIcon
.
click
()
})
// Recently searched UNI token should exist.
getSearchBar
().
clear
()
cy
.
get
(
'
[data-cy="searchbar-dropdown"]
'
)
.
contains
(
'
[data-cy="searchbar-dropdown"]
'
,
'
Recent searches
'
)
.
find
(
'
[data-cy="searchbar-token-row-UNI"]
'
)
.
should
(
'
exist
'
)
.
should
(
'
exist
'
)
// Most popular 3 tokens should be shown.
cy
.
get
(
'
[data-cy="searchbar-dropdown"]
'
)
.
contains
(
'
[data-cy="searchbar-dropdown"]
'
,
'
Popular tokens
'
)
.
find
(
'
[data-cy^="searchbar-token-row"]
'
)
.
its
(
'
length
'
)
.
should
(
'
be.eq
'
,
3
)
})
})
it
.
skip
(
'
should show blocked badge when blocked token is searched for
'
,
()
=>
{
it
(
'
should go to the selected result when recent results are shown
'
,
()
=>
{
// Search for mTSLA, which is a blocked token.
// Seed recent results with UNI.
getSearchBar
().
clear
().
type
(
'
mtsla
'
)
openSearch
()
cy
.
get
(
'
[data-cy="searchbar-token-row-mTSLA"]
'
).
find
(
'
[data-cy="blocked-icon"]
'
).
should
(
'
exist
'
)
getSearchBar
().
type
(
'
uni
'
)
cy
.
get
(
getTestSelector
(
'
searchbar-token-row-UNI
'
))
getSearchBar
().
clear
().
type
(
'
{esc}
'
)
// Search a different token by name.
openSearch
()
getSearchBar
().
type
(
'
eth
'
)
cy
.
get
(
getTestSelector
(
'
searchbar-token-row-ETH
'
))
// Validate that we go to the searched/selected result.
getSearchBar
().
type
(
'
{enter}
'
)
cy
.
url
().
should
(
'
contain
'
,
'
tokens/ethereum/NATIVE
'
)
})
})
})
})
src/components/NavBar/SearchBarDropdown.tsx
View file @
b55680db
...
@@ -57,7 +57,7 @@ const SearchBarDropdownSection = ({
...
@@ -57,7 +57,7 @@ const SearchBarDropdownSection = ({
eventProperties
,
eventProperties
,
}:
SearchBarDropdownSectionProps
)
=>
{
}:
SearchBarDropdownSectionProps
)
=>
{
return
(
return
(
<
Column
gap=
"12"
data
-
cy
=
"searchbar-dropdown"
>
<
Column
gap=
"12"
data
-
testid
=
"searchbar-dropdown"
>
<
Row
paddingX=
"16"
paddingY=
"4"
gap=
"8"
color=
"gray300"
className=
{
subheadSmall
}
style=
{
{
lineHeight
:
'
20px
'
}
}
>
<
Row
paddingX=
"16"
paddingY=
"4"
gap=
"8"
color=
"gray300"
className=
{
subheadSmall
}
style=
{
{
lineHeight
:
'
20px
'
}
}
>
{
headerIcon
?
headerIcon
:
null
}
{
headerIcon
?
headerIcon
:
null
}
<
Box
>
{
header
}
</
Box
>
<
Box
>
{
header
}
</
Box
>
...
...
src/components/NavBar/SuggestionRow.tsx
View file @
b55680db
...
@@ -160,7 +160,7 @@ export const TokenRow = ({ token, isHovered, setHoveredIndex, toggleOpen, index,
...
@@ -160,7 +160,7 @@ export const TokenRow = ({ token, isHovered, setHoveredIndex, toggleOpen, index,
return
(
return
(
<
Link
<
Link
data
-
cy
=
{
`searchbar-token-row-${token.symbol}`
}
data
-
testid
=
{
`searchbar-token-row-${token.symbol}`
}
to=
{
tokenDetailsPath
}
to=
{
tokenDetailsPath
}
onClick=
{
handleClick
}
onClick=
{
handleClick
}
onMouseEnter=
{
()
=>
!
isHovered
&&
setHoveredIndex
(
index
)
}
onMouseEnter=
{
()
=>
!
isHovered
&&
setHoveredIndex
(
index
)
}
...
...
src/components/NavBar/__snapshots__/SearchBarDropdown.test.tsx.snap
View file @
b55680db
...
@@ -13,7 +13,7 @@ exports[`disable nft on searchbar dropdown should not render popular nft collect
...
@@ -13,7 +13,7 @@ exports[`disable nft on searchbar dropdown should not render popular nft collect
>
>
<div
<div
class="reset_base__1klryar0 sprinkles_display_flex_sm__rgw6ez44v sprinkles_flexDirection_column_sm__rgw6ez477 sprinkles_gap_12_sm__rgw6ez3tj"
class="reset_base__1klryar0 sprinkles_display_flex_sm__rgw6ez44v sprinkles_flexDirection_column_sm__rgw6ez477 sprinkles_gap_12_sm__rgw6ez3tj"
data-
cy
="searchbar-dropdown"
data-
testid
="searchbar-dropdown"
>
>
<div
<div
class="reset_base__1klryar0 sprinkles_paddingLeft_16_sm__rgw6ez2e7 sprinkles_paddingRight_16_sm__rgw6ez2jp sprinkles_paddingTop_4_sm__rgw6ez2o7 sprinkles_paddingBottom_4_sm__rgw6ez27p sprinkles_display_flex_sm__rgw6ez44v sprinkles_flexDirection_row_sm__rgw6ez471 sprinkles_alignItems_center_sm__rgw6ez3j sprinkles_gap_8_sm__rgw6ez3t7 sprinkles_color_gray300_default__rgw6ez4k1 common__127l8hd4 sprinkles_fontWeight_medium_sm__rgw6ezcv sprinkles_fontSize_14_sm__rgw6ezav sprinkles_lineHeight_14_sm__rgw6ezdv"
class="reset_base__1klryar0 sprinkles_paddingLeft_16_sm__rgw6ez2e7 sprinkles_paddingRight_16_sm__rgw6ez2jp sprinkles_paddingTop_4_sm__rgw6ez2o7 sprinkles_paddingBottom_4_sm__rgw6ez27p sprinkles_display_flex_sm__rgw6ez44v sprinkles_flexDirection_row_sm__rgw6ez471 sprinkles_alignItems_center_sm__rgw6ez3j sprinkles_gap_8_sm__rgw6ez3t7 sprinkles_color_gray300_default__rgw6ez4k1 common__127l8hd4 sprinkles_fontWeight_medium_sm__rgw6ezcv sprinkles_fontSize_14_sm__rgw6ezav sprinkles_lineHeight_14_sm__rgw6ezdv"
...
@@ -133,7 +133,7 @@ exports[`disable nft on searchbar dropdown should render popular nft collections
...
@@ -133,7 +133,7 @@ exports[`disable nft on searchbar dropdown should render popular nft collections
>
>
<div
<div
class="reset_base__1klryar0 sprinkles_display_flex_sm__rgw6ez44v sprinkles_flexDirection_column_sm__rgw6ez477 sprinkles_gap_12_sm__rgw6ez3tj"
class="reset_base__1klryar0 sprinkles_display_flex_sm__rgw6ez44v sprinkles_flexDirection_column_sm__rgw6ez477 sprinkles_gap_12_sm__rgw6ez3tj"
data-
cy
="searchbar-dropdown"
data-
testid
="searchbar-dropdown"
>
>
<div
<div
class="reset_base__1klryar0 sprinkles_paddingLeft_16_sm__rgw6ez2e7 sprinkles_paddingRight_16_sm__rgw6ez2jp sprinkles_paddingTop_4_sm__rgw6ez2o7 sprinkles_paddingBottom_4_sm__rgw6ez27p sprinkles_display_flex_sm__rgw6ez44v sprinkles_flexDirection_row_sm__rgw6ez471 sprinkles_alignItems_center_sm__rgw6ez3j sprinkles_gap_8_sm__rgw6ez3t7 sprinkles_color_gray300_default__rgw6ez4k1 common__127l8hd4 sprinkles_fontWeight_medium_sm__rgw6ezcv sprinkles_fontSize_14_sm__rgw6ezav sprinkles_lineHeight_14_sm__rgw6ezdv"
class="reset_base__1klryar0 sprinkles_paddingLeft_16_sm__rgw6ez2e7 sprinkles_paddingRight_16_sm__rgw6ez2jp sprinkles_paddingTop_4_sm__rgw6ez2o7 sprinkles_paddingBottom_4_sm__rgw6ez27p sprinkles_display_flex_sm__rgw6ez44v sprinkles_flexDirection_row_sm__rgw6ez471 sprinkles_alignItems_center_sm__rgw6ez3j sprinkles_gap_8_sm__rgw6ez3t7 sprinkles_color_gray300_default__rgw6ez4k1 common__127l8hd4 sprinkles_fontWeight_medium_sm__rgw6ezcv sprinkles_fontSize_14_sm__rgw6ezav sprinkles_lineHeight_14_sm__rgw6ezdv"
...
@@ -236,7 +236,7 @@ exports[`disable nft on searchbar dropdown should render popular nft collections
...
@@ -236,7 +236,7 @@ exports[`disable nft on searchbar dropdown should render popular nft collections
</div>
</div>
<div
<div
class="reset_base__1klryar0 sprinkles_display_flex_sm__rgw6ez44v sprinkles_flexDirection_column_sm__rgw6ez477 sprinkles_gap_12_sm__rgw6ez3tj"
class="reset_base__1klryar0 sprinkles_display_flex_sm__rgw6ez44v sprinkles_flexDirection_column_sm__rgw6ez477 sprinkles_gap_12_sm__rgw6ez3tj"
data-
cy
="searchbar-dropdown"
data-
testid
="searchbar-dropdown"
>
>
<div
<div
class="reset_base__1klryar0 sprinkles_paddingLeft_16_sm__rgw6ez2e7 sprinkles_paddingRight_16_sm__rgw6ez2jp sprinkles_paddingTop_4_sm__rgw6ez2o7 sprinkles_paddingBottom_4_sm__rgw6ez27p sprinkles_display_flex_sm__rgw6ez44v sprinkles_flexDirection_row_sm__rgw6ez471 sprinkles_alignItems_center_sm__rgw6ez3j sprinkles_gap_8_sm__rgw6ez3t7 sprinkles_color_gray300_default__rgw6ez4k1 common__127l8hd4 sprinkles_fontWeight_medium_sm__rgw6ezcv sprinkles_fontSize_14_sm__rgw6ezav sprinkles_lineHeight_14_sm__rgw6ezdv"
class="reset_base__1klryar0 sprinkles_paddingLeft_16_sm__rgw6ez2e7 sprinkles_paddingRight_16_sm__rgw6ez2jp sprinkles_paddingTop_4_sm__rgw6ez2o7 sprinkles_paddingBottom_4_sm__rgw6ez27p sprinkles_display_flex_sm__rgw6ez44v sprinkles_flexDirection_row_sm__rgw6ez471 sprinkles_alignItems_center_sm__rgw6ez3j sprinkles_gap_8_sm__rgw6ez3t7 sprinkles_color_gray300_default__rgw6ez4k1 common__127l8hd4 sprinkles_fontWeight_medium_sm__rgw6ezcv sprinkles_fontSize_14_sm__rgw6ezav sprinkles_lineHeight_14_sm__rgw6ezdv"
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment