[FIX] Detox tests (#1790)
This commit is contained in:
parent
3d535196a5
commit
005e1ac46b
|
@ -44,7 +44,7 @@ jobs:
|
|||
paths:
|
||||
- ./node_modules
|
||||
|
||||
e2e-test:
|
||||
e2e-build:
|
||||
macos:
|
||||
xcode: "11.2.1"
|
||||
|
||||
|
@ -80,11 +80,73 @@ jobs:
|
|||
yarn global add detox-cli
|
||||
yarn
|
||||
|
||||
- run:
|
||||
name: Rebuild Detox framework cache
|
||||
command: |
|
||||
detox clean-framework-cache
|
||||
detox build-framework-cache
|
||||
|
||||
- run:
|
||||
name: Build
|
||||
command: |
|
||||
detox build --configuration ios.sim.release
|
||||
|
||||
- persist_to_workspace:
|
||||
root: .
|
||||
paths:
|
||||
- ios/build/Build/Products/Release-iphonesimulator/RocketChatRN.app
|
||||
|
||||
- save_cache:
|
||||
name: Save NPM cache
|
||||
key: node-v1-mac-{{ checksum "yarn.lock" }}
|
||||
paths:
|
||||
- node_modules
|
||||
|
||||
e2e-test:
|
||||
macos:
|
||||
xcode: "11.2.1"
|
||||
|
||||
environment:
|
||||
BASH_ENV: "~/.nvm/nvm.sh"
|
||||
|
||||
steps:
|
||||
- checkout
|
||||
|
||||
- attach_workspace:
|
||||
at: .
|
||||
|
||||
- restore_cache:
|
||||
name: Restore NPM cache
|
||||
key: node-v1-mac-{{ checksum "yarn.lock" }}
|
||||
|
||||
- run:
|
||||
name: Install Node 8
|
||||
command: |
|
||||
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.6/install.sh | bash
|
||||
source ~/.nvm/nvm.sh
|
||||
# https://github.com/creationix/nvm/issues/1394
|
||||
set +e
|
||||
nvm install 8
|
||||
|
||||
- run:
|
||||
name: Install appleSimUtils
|
||||
command: |
|
||||
brew update
|
||||
brew tap wix/brew
|
||||
brew install wix/brew/applesimutils
|
||||
|
||||
- run:
|
||||
name: Install NPM modules
|
||||
command: |
|
||||
yarn global add detox-cli
|
||||
yarn
|
||||
|
||||
- run:
|
||||
name: Rebuild Detox framework cache
|
||||
command: |
|
||||
detox clean-framework-cache
|
||||
detox build-framework-cache
|
||||
|
||||
- run:
|
||||
name: Test
|
||||
command: |
|
||||
|
@ -96,9 +158,6 @@ jobs:
|
|||
paths:
|
||||
- node_modules
|
||||
|
||||
- store_artifacts:
|
||||
path: /tmp/screenshots
|
||||
|
||||
android-build:
|
||||
<<: *defaults
|
||||
docker:
|
||||
|
@ -359,9 +418,12 @@ workflows:
|
|||
type: approval
|
||||
requires:
|
||||
- lint-testunit
|
||||
- e2e-test:
|
||||
- e2e-build:
|
||||
requires:
|
||||
- e2e-hold
|
||||
- e2e-test:
|
||||
requires:
|
||||
- e2e-build
|
||||
|
||||
- ios-build:
|
||||
requires:
|
||||
|
|
|
@ -220,6 +220,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Message"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -463,6 +464,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -706,6 +708,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="..."
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -927,6 +930,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Different user"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -1021,6 +1025,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="This is the third message"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -1115,6 +1120,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="This is the second message"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -1336,6 +1342,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="This is the first message"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -1452,6 +1459,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Message"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -1713,6 +1721,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Message"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -1952,6 +1961,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Message"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -2195,6 +2205,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Message"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -2467,6 +2478,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Testing block quote"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -2720,6 +2732,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Testing block quote"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -2761,6 +2774,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Testing block quote"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -3042,6 +3056,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Dogs"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -3120,6 +3135,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="cats"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -3202,6 +3218,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="cats"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -3491,6 +3508,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Dogs"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -3571,6 +3589,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Cats"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -3856,6 +3875,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Dogs"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -3992,6 +4012,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Cats"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -4239,6 +4260,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Message"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -4482,6 +4504,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Message"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -4742,6 +4765,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
rocket.cat
|
||||
</Text>
|
||||
<Text
|
||||
accessibilityLabel=" "
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -4785,6 +4809,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
diego.mello
|
||||
</Text>
|
||||
<Text
|
||||
accessibilityLabel=" "
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -4828,6 +4853,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
all
|
||||
</Text>
|
||||
<Text
|
||||
accessibilityLabel=" "
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -4871,6 +4897,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
here
|
||||
</Text>
|
||||
<Text
|
||||
accessibilityLabel=" "
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -5131,6 +5158,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="👊🤙👏"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -5379,6 +5407,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="👏"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -5659,6 +5688,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
/>
|
||||
</View>
|
||||
<Text
|
||||
accessibilityLabel=" "
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -5722,6 +5752,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
/>
|
||||
</View>
|
||||
<Text
|
||||
accessibilityLabel=" "
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -6251,6 +6282,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="🤙"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -6531,6 +6563,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="🤙"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -6589,6 +6622,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
/>
|
||||
</View>
|
||||
<Text
|
||||
accessibilityLabel="🤙🤙"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -6832,6 +6866,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Testing"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -7075,6 +7110,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Reactions"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -7658,6 +7694,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Multiple Reactions"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -8682,6 +8719,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Fourth message"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -8903,6 +8941,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Third message"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -9124,6 +9163,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Second message"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -9345,6 +9385,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="First message"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -9588,6 +9629,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Fourth message"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -9871,6 +9913,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Third message"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -10010,6 +10053,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Second message"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -10231,6 +10275,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Second message"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -10497,6 +10542,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="First message"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -10817,6 +10863,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="This is a description"
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
|
@ -11115,6 +11162,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="This is a description "
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
|
@ -11434,6 +11482,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="This is a description "
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
|
@ -12064,6 +12113,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="This is a description "
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
|
@ -12188,6 +12238,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="First message"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -12412,6 +12463,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="This is a description"
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
|
@ -13025,6 +13077,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="I'm fine!"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -13145,6 +13198,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="How are you?"
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
|
@ -13366,6 +13420,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="I'm fine!"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -13486,6 +13541,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="How are you? "
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
|
@ -13761,6 +13817,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="I'm fine!"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -13855,6 +13912,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="I'm fine!"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -14076,6 +14134,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="I'm fine!"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -14192,6 +14251,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="I'm fine!"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -14457,6 +14517,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="How are you?"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -14773,6 +14834,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="How are you?"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -16727,6 +16789,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="How are you?"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -19857,6 +19920,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Message "
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -20333,6 +20397,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Message"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -20453,6 +20518,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Custom fields"
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
|
@ -20946,6 +21012,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Message"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -21066,6 +21133,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Custom fields"
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
|
@ -21292,6 +21360,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Custom fields 2"
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
|
@ -21641,6 +21710,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Broadcasted message"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -21708,6 +21778,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
"paddingHorizontal": 15,
|
||||
}
|
||||
}
|
||||
testID="message-broadcast-reply"
|
||||
>
|
||||
<Text
|
||||
allowFontScaling={false}
|
||||
|
@ -21966,6 +22037,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="This message is inside an archived room"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -22240,6 +22312,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="This message has error"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -22422,6 +22495,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="This message has error too"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -22670,6 +22744,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Temp message"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -22913,6 +22988,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Message being edited"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -23091,6 +23167,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Message removed"
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
|
@ -23259,6 +23336,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Has joined the channel"
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
|
@ -23427,6 +23505,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Room name changed to: New name by diego.mello"
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
|
@ -23595,6 +23674,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Message pinned"
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
|
@ -23763,6 +23843,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Has left the channel"
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
|
@ -23931,6 +24012,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="User rocket.cat removed by diego.mello"
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
|
@ -24099,6 +24181,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="User rocket.cat added by diego.mello"
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
|
@ -24267,6 +24350,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="User rocket.cat muted by diego.mello"
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
|
@ -24435,6 +24519,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="User rocket.cat unmuted by diego.mello"
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
|
@ -24603,6 +24688,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="rocket.cat was set admin by diego.mello"
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
|
@ -24771,6 +24857,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="rocket.cat is no longer admin by diego.mello"
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
|
@ -24939,6 +25026,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Room description changed to: new description by diego.mello"
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
|
@ -25107,6 +25195,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Room announcement changed to: new announcement by diego.mello"
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
|
@ -25275,6 +25364,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Room topic changed to: new topic by diego.mello"
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
|
@ -25443,6 +25533,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Room type changed to: public by diego.mello"
|
||||
style={
|
||||
Array [
|
||||
Object {
|
||||
|
@ -25681,6 +25772,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Message"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -25924,6 +26016,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Italic with single "
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -25950,6 +26043,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
Italic with single
|
||||
</Text>
|
||||
<Text
|
||||
accessibilityLabel="underscore"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -25979,6 +26073,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
underscore
|
||||
</Text>
|
||||
<Text
|
||||
accessibilityLabel=" or double "
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -26005,6 +26100,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
or double
|
||||
</Text>
|
||||
<Text
|
||||
accessibilityLabel="underscores"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -26034,6 +26130,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
underscores
|
||||
</Text>
|
||||
<Text
|
||||
accessibilityLabel=". Bold with single "
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -26060,6 +26157,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
. Bold with single
|
||||
</Text>
|
||||
<Text
|
||||
accessibilityLabel="asterisk"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -26089,6 +26187,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
asterisk
|
||||
</Text>
|
||||
<Text
|
||||
accessibilityLabel=" or double "
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -26115,6 +26214,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
or double
|
||||
</Text>
|
||||
<Text
|
||||
accessibilityLabel="asterisks"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -26144,6 +26244,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
asterisks
|
||||
</Text>
|
||||
<Text
|
||||
accessibilityLabel=". Strikethrough with single "
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -26170,6 +26271,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
. Strikethrough with single
|
||||
</Text>
|
||||
<Text
|
||||
accessibilityLabel="Strikethrough"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -26199,6 +26301,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
Strikethrough
|
||||
</Text>
|
||||
<Text
|
||||
accessibilityLabel=" or double "
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -26225,6 +26328,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
or double
|
||||
</Text>
|
||||
<Text
|
||||
accessibilityLabel="Strikethrough"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -26474,6 +26578,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="H1"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -26510,6 +26615,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="H2"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -26546,6 +26652,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="H3"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -26582,6 +26689,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="H4"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -26618,6 +26726,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="H5"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -26654,6 +26763,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="H6"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -26895,6 +27005,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Support "
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -26934,6 +27045,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Google"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -26967,6 +27079,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
</Text>
|
||||
</Text>
|
||||
<Text
|
||||
accessibilityLabel=" "
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -27006,6 +27119,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="I\`m an inline-style link"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -27039,6 +27153,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
</Text>
|
||||
</Text>
|
||||
<Text
|
||||
accessibilityLabel=" "
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -27078,6 +27193,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="https://google.com"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -27559,6 +27675,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Inline "
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -27602,6 +27719,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
code
|
||||
</Text>
|
||||
<Text
|
||||
accessibilityLabel=" has "
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -27645,6 +27763,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
back-ticks around
|
||||
</Text>
|
||||
<Text
|
||||
accessibilityLabel=" it."
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -27936,6 +28055,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Quote"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -28269,6 +28389,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="First Header"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -28322,6 +28443,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Second Header"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -28394,6 +28516,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Content from cell 1"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -28447,6 +28570,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Content from cell 2"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -28516,6 +28640,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Content in the first column"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
@ -28569,6 +28694,7 @@ exports[`Storyshots Message list message 1`] = `
|
|||
}
|
||||
>
|
||||
<Text
|
||||
accessibilityLabel="Content in the second column"
|
||||
numberOfLines={0}
|
||||
style={
|
||||
Array [
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import React from 'react';
|
||||
import { FlatList } from 'react-native';
|
||||
import { FlatList, View } from 'react-native';
|
||||
import PropTypes from 'prop-types';
|
||||
import equal from 'deep-equal';
|
||||
|
||||
|
@ -12,15 +12,16 @@ const Mentions = React.memo(({ mentions, trackingType, theme }) => {
|
|||
return null;
|
||||
}
|
||||
return (
|
||||
<FlatList
|
||||
testID='messagebox-container'
|
||||
style={[styles.mentionList, { backgroundColor: themes[theme].auxiliaryBackground }]}
|
||||
data={mentions}
|
||||
extraData={mentions}
|
||||
renderItem={({ item }) => <MentionItem item={item} trackingType={trackingType} theme={theme} />}
|
||||
keyExtractor={item => item.id || item.username || item.command || item}
|
||||
keyboardShouldPersistTaps='always'
|
||||
/>
|
||||
<View testID='messagebox-container'>
|
||||
<FlatList
|
||||
style={[styles.mentionList, { backgroundColor: themes[theme].auxiliaryBackground }]}
|
||||
data={mentions}
|
||||
extraData={mentions}
|
||||
renderItem={({ item }) => <MentionItem item={item} trackingType={trackingType} theme={theme} />}
|
||||
keyExtractor={item => item.id || item.username || item.command || item}
|
||||
keyboardShouldPersistTaps='always'
|
||||
/>
|
||||
</View>
|
||||
);
|
||||
}, (prevProps, nextProps) => {
|
||||
if (prevProps.theme !== nextProps.theme) {
|
||||
|
|
|
@ -151,6 +151,7 @@ class Markdown extends PureComponent {
|
|||
];
|
||||
return (
|
||||
<Text
|
||||
accessibilityLabel={literal}
|
||||
style={[styles.text, defaultStyle, ...style]}
|
||||
numberOfLines={numberOfLines}
|
||||
>
|
||||
|
|
|
@ -21,6 +21,7 @@ const Broadcast = React.memo(({
|
|||
background={Touchable.Ripple(themes[theme].bannerBackground)}
|
||||
style={[styles.button, { backgroundColor: themes[theme].tintColor }]}
|
||||
hitSlop={BUTTON_HIT_SLOP}
|
||||
testID='message-broadcast-reply'
|
||||
>
|
||||
<>
|
||||
<CustomIcon name='back' size={20} style={styles.buttonIcon} color={themes[theme].buttonText} />
|
||||
|
|
|
@ -11,7 +11,14 @@ import { themes } from '../../constants/colors';
|
|||
|
||||
const Content = React.memo((props) => {
|
||||
if (props.isInfo) {
|
||||
return <Text style={[styles.textInfo, { color: themes[props.theme].auxiliaryText }]}>{getInfoMessage({ ...props })}</Text>;
|
||||
const infoMessage = getInfoMessage({ ...props });
|
||||
return (
|
||||
<Text
|
||||
style={[styles.textInfo, { color: themes[props.theme].auxiliaryText }]}
|
||||
accessibilityLabel={infoMessage}
|
||||
>{infoMessage}
|
||||
</Text>
|
||||
);
|
||||
}
|
||||
|
||||
let content = null;
|
||||
|
|
|
@ -166,10 +166,12 @@ const handleLogout = function* handleLogout({ forcedByServer }) {
|
|||
|
||||
// see if there're other logged in servers and selects first one
|
||||
if (servers.length > 0) {
|
||||
const newServer = servers[0].id;
|
||||
const token = yield RNUserDefaults.get(`${ RocketChat.TOKEN_KEY }-${ newServer }`);
|
||||
if (token) {
|
||||
return yield put(selectServerRequest(newServer));
|
||||
for (let i = 0; i < servers.length; i += 1) {
|
||||
const newServer = servers[i].id;
|
||||
const token = yield RNUserDefaults.get(`${ RocketChat.TOKEN_KEY }-${ newServer }`);
|
||||
if (token) {
|
||||
return yield put(selectServerRequest(newServer));
|
||||
}
|
||||
}
|
||||
}
|
||||
// if there's no servers, go outside
|
||||
|
|
|
@ -242,7 +242,6 @@ class NotificationPreferencesView extends React.Component {
|
|||
{...scrollPersistTaps}
|
||||
style={{ backgroundColor: themes[theme].auxiliaryBackground }}
|
||||
contentContainerStyle={styles.contentContainer}
|
||||
showsVerticalScrollIndicator={false}
|
||||
testID='notification-preference-view-list'
|
||||
>
|
||||
<Separator theme={theme} />
|
||||
|
|
|
@ -2,7 +2,7 @@ import React from 'react';
|
|||
import PropTypes from 'prop-types';
|
||||
import { View, ScrollView, Keyboard } from 'react-native';
|
||||
import { connect } from 'react-redux';
|
||||
import Dialog from 'react-native-dialog';
|
||||
import prompt from 'react-native-prompt-android';
|
||||
import SHA256 from 'js-sha256';
|
||||
import ImagePicker from 'react-native-image-crop-picker';
|
||||
import RNPickerSelect from 'react-native-picker-select';
|
||||
|
@ -61,7 +61,6 @@ class ProfileView extends React.Component {
|
|||
}
|
||||
|
||||
state = {
|
||||
showPasswordAlert: false,
|
||||
saving: false,
|
||||
name: null,
|
||||
username: null,
|
||||
|
@ -155,19 +154,11 @@ class ProfileView extends React.Component {
|
|||
);
|
||||
}
|
||||
|
||||
closePasswordAlert = () => {
|
||||
this.setState({ showPasswordAlert: false });
|
||||
}
|
||||
|
||||
handleError = (e, func, action) => {
|
||||
if (e.data && e.data.errorType === 'error-too-many-requests') {
|
||||
return showErrorAlert(e.data.error);
|
||||
}
|
||||
showErrorAlert(
|
||||
I18n.t('There_was_an_error_while_action', { action: I18n.t(action) }),
|
||||
'',
|
||||
() => this.setState({ showPasswordAlert: false })
|
||||
);
|
||||
showErrorAlert(I18n.t('There_was_an_error_while_action', { action: I18n.t(action) }));
|
||||
}
|
||||
|
||||
submit = async() => {
|
||||
|
@ -212,7 +203,26 @@ class ProfileView extends React.Component {
|
|||
|
||||
const requirePassword = !!params.email || newPassword;
|
||||
if (requirePassword && !params.currentPassword) {
|
||||
return this.setState({ showPasswordAlert: true, saving: false });
|
||||
this.setState({ saving: false });
|
||||
prompt(
|
||||
I18n.t('Please_enter_your_password'),
|
||||
I18n.t('For_your_security_you_must_enter_your_current_password_to_continue'),
|
||||
[
|
||||
{ text: I18n.t('Cancel'), onPress: () => {}, style: 'cancel' },
|
||||
{
|
||||
text: I18n.t('Save'),
|
||||
onPress: (p) => {
|
||||
this.setState({ currentPassword: p });
|
||||
this.submit();
|
||||
}
|
||||
}
|
||||
],
|
||||
{
|
||||
type: 'secure-text',
|
||||
cancelable: false
|
||||
}
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
|
@ -233,7 +243,7 @@ class ProfileView extends React.Component {
|
|||
} else {
|
||||
setUser({ ...params });
|
||||
}
|
||||
this.setState({ saving: false, showPasswordAlert: false });
|
||||
this.setState({ saving: false });
|
||||
EventEmitter.emit(LISTENER, { message: I18n.t('Profile_saved_successfully') });
|
||||
this.init();
|
||||
}
|
||||
|
@ -409,7 +419,7 @@ class ProfileView extends React.Component {
|
|||
|
||||
render() {
|
||||
const {
|
||||
name, username, email, newPassword, avatarUrl, customFields, avatar, saving, showPasswordAlert
|
||||
name, username, email, newPassword, avatarUrl, customFields, avatar, saving
|
||||
} = this.state;
|
||||
const {
|
||||
baseUrl,
|
||||
|
@ -533,22 +543,6 @@ class ProfileView extends React.Component {
|
|||
loading={saving}
|
||||
theme={theme}
|
||||
/>
|
||||
<Dialog.Container visible={showPasswordAlert}>
|
||||
<Dialog.Title>
|
||||
{I18n.t('Please_enter_your_password')}
|
||||
</Dialog.Title>
|
||||
<Dialog.Description>
|
||||
{I18n.t('For_your_security_you_must_enter_your_current_password_to_continue')}
|
||||
</Dialog.Description>
|
||||
<Dialog.Input
|
||||
onChangeText={value => this.setState({ currentPassword: value })}
|
||||
secureTextEntry
|
||||
testID='profile-view-typed-password'
|
||||
style={styles.dialogInput}
|
||||
/>
|
||||
<Dialog.Button label={I18n.t('Cancel')} onPress={this.closePasswordAlert} />
|
||||
<Dialog.Button label={I18n.t('Save')} onPress={this.submit} />
|
||||
</Dialog.Container>
|
||||
</ScrollView>
|
||||
</SafeAreaView>
|
||||
</KeyboardView>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { StyleSheet, Platform } from 'react-native';
|
||||
import { StyleSheet } from 'react-native';
|
||||
|
||||
export default StyleSheet.create({
|
||||
disabled: {
|
||||
|
@ -23,14 +23,5 @@ export default StyleSheet.create({
|
|||
marginRight: 15,
|
||||
marginBottom: 15,
|
||||
borderRadius: 2
|
||||
},
|
||||
dialogInput: Platform.select({
|
||||
ios: {},
|
||||
android: {
|
||||
borderRadius: 4,
|
||||
borderColor: 'rgba(0,0,0,.15)',
|
||||
borderWidth: 2,
|
||||
paddingHorizontal: 10
|
||||
}
|
||||
})
|
||||
}
|
||||
});
|
||||
|
|
|
@ -452,7 +452,7 @@ class RoomInfoEditView extends React.Component {
|
|||
]}
|
||||
onPress={this.toggleArchive}
|
||||
disabled={!this.hasArchivePermission()}
|
||||
testID='room-info-edit-view-archive'
|
||||
testID={archived ? 'room-info-edit-view-unarchive' : 'room-info-edit-view-archive'}
|
||||
>
|
||||
<Text
|
||||
style={[
|
||||
|
@ -460,7 +460,6 @@ class RoomInfoEditView extends React.Component {
|
|||
styles.button_inverted,
|
||||
{ color: dangerColor }
|
||||
]}
|
||||
accessibilityTraits='button'
|
||||
>
|
||||
{ archived ? I18n.t('UNARCHIVE') : I18n.t('ARCHIVE') }
|
||||
</Text>
|
||||
|
|
|
@ -173,7 +173,7 @@ class RoomInfoView extends React.Component {
|
|||
const { theme } = this.props;
|
||||
return (
|
||||
<View style={styles.item}>
|
||||
<Text style={[styles.itemLabel, { color: themes[theme].auxiliaryText }]}>{I18n.t(camelize(key))}</Text>
|
||||
<Text accessibilityLabel={key} style={[styles.itemLabel, { color: themes[theme].auxiliaryText }]}>{I18n.t(camelize(key))}</Text>
|
||||
<Markdown
|
||||
msg={room[key] ? room[key] : `__${ I18n.t(`No_${ key }_provided`) }__`}
|
||||
theme={theme}
|
||||
|
|
|
@ -116,7 +116,11 @@ const Header = React.memo(({
|
|||
};
|
||||
|
||||
return (
|
||||
<TouchableOpacity onPress={onPress} style={[styles.container, { width: width - widthOffset }]}>
|
||||
<TouchableOpacity
|
||||
testID='room-view-header-actions'
|
||||
onPress={onPress}
|
||||
style={[styles.container, { width: width - widthOffset }]}
|
||||
>
|
||||
<View style={[styles.titleContainer, tmid && styles.threadContainer]}>
|
||||
<ScrollView
|
||||
showsHorizontalScrollIndicator={false}
|
||||
|
|
|
@ -854,7 +854,7 @@ class RoomView extends React.Component {
|
|||
if (!joined && !this.tmid) {
|
||||
return (
|
||||
<View style={styles.joinRoomContainer} key='room-view-join' testID='room-view-join'>
|
||||
<Text style={[styles.previewMode, { color: themes[theme].titleText }]}>{I18n.t('You_are_in_preview_mode')}</Text>
|
||||
<Text accessibilityLabel={I18n.t('You_are_in_preview_mode')} style={[styles.previewMode, { color: themes[theme].titleText }]}>{I18n.t('You_are_in_preview_mode')}</Text>
|
||||
<Touch
|
||||
onPress={this.joinRoom}
|
||||
style={[styles.joinRoomButton, { backgroundColor: themes[theme].actionTintColor }]}
|
||||
|
@ -868,7 +868,7 @@ class RoomView extends React.Component {
|
|||
if (this.isReadOnly || room.archived) {
|
||||
return (
|
||||
<View style={styles.readOnly}>
|
||||
<Text style={[styles.previewMode, { color: themes[theme].titleText }]}>{I18n.t('This_room_is_read_only')}</Text>
|
||||
<Text style={[styles.previewMode, { color: themes[theme].titleText }]} accessibilityLabel={I18n.t('This_room_is_read_only')}>{I18n.t('This_room_is_read_only')}</Text>
|
||||
</View>
|
||||
);
|
||||
}
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
const {
|
||||
device, expect, element, by, waitFor
|
||||
} = require('detox');
|
||||
const { takeScreenshot } = require('./helpers/screenshot');
|
||||
const data = require('./data');
|
||||
|
||||
describe('Onboarding', () => {
|
||||
|
@ -25,10 +24,6 @@ describe('Onboarding', () => {
|
|||
it('should have "Create a new workspace"', async() => {
|
||||
await expect(element(by.id('create-workspace-button'))).toBeVisible();
|
||||
});
|
||||
|
||||
after(async() => {
|
||||
takeScreenshot();
|
||||
});
|
||||
});
|
||||
|
||||
describe('Usage', async() => {
|
||||
|
@ -40,12 +35,12 @@ describe('Onboarding', () => {
|
|||
await element(by.id('join-community-button')).tap();
|
||||
await waitFor(element(by.id('welcome-view'))).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.id('welcome-view'))).toBeVisible();
|
||||
await waitFor(element(by.text('Rocket.Chat'))).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.text('Rocket.Chat'))).toBeVisible();
|
||||
// await waitFor(element(by.text('Rocket.Chat'))).toBeVisible().withTimeout(60000);
|
||||
// await expect(element(by.text('Rocket.Chat'))).toBeVisible();
|
||||
});
|
||||
|
||||
it('should navigate to new server', async() => {
|
||||
await device.reloadReactNative();
|
||||
await device.launchApp({ newInstance: true });
|
||||
await waitFor(element(by.id('onboarding-view'))).toBeVisible().withTimeout(2000);
|
||||
await element(by.id('connect-server-button')).tap();
|
||||
await waitFor(element(by.id('new-server-view'))).toBeVisible().withTimeout(60000);
|
||||
|
@ -55,7 +50,7 @@ describe('Onboarding', () => {
|
|||
it('should enter an invalid server and get error', async() => {
|
||||
await element(by.id('new-server-view-input')).replaceText('invalidtest');
|
||||
await element(by.id('new-server-view-button')).tap();
|
||||
const errorText = 'The URL you entered is invalid. Check it and try again, please!';
|
||||
const errorText = 'Oops!';
|
||||
await waitFor(element(by.text(errorText))).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.text(errorText))).toBeVisible();
|
||||
});
|
||||
|
@ -69,7 +64,7 @@ describe('Onboarding', () => {
|
|||
});
|
||||
|
||||
it('should enter a valid server without login services and navigate to login', async() => {
|
||||
await device.reloadReactNative();
|
||||
await device.launchApp({ newInstance: true });
|
||||
await waitFor(element(by.id('onboarding-view'))).toBeVisible().withTimeout(2000);
|
||||
await element(by.id('connect-server-button')).tap();
|
||||
await waitFor(element(by.id('new-server-view'))).toBeVisible().withTimeout(60000);
|
||||
|
@ -78,10 +73,5 @@ describe('Onboarding', () => {
|
|||
await waitFor(element(by.id('login-view'))).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.id('login-view'))).toBeVisible();
|
||||
});
|
||||
|
||||
|
||||
afterEach(async() => {
|
||||
takeScreenshot();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
@ -1,12 +1,11 @@
|
|||
const {
|
||||
device, expect, element, by, waitFor
|
||||
} = require('detox');
|
||||
const { takeScreenshot } = require('./helpers/screenshot');
|
||||
const { tapBack } = require('./helpers/app');
|
||||
|
||||
describe('Welcome screen', () => {
|
||||
before(async() => {
|
||||
await device.reloadReactNative();
|
||||
await device.launchApp({ newInstance: true });
|
||||
await element(by.id('join-community-button')).tap();
|
||||
await waitFor(element(by.id('welcome-view'))).toBeVisible().withTimeout(60000);
|
||||
})
|
||||
|
@ -25,10 +24,6 @@ describe('Welcome screen', () => {
|
|||
});
|
||||
|
||||
// TODO: oauth
|
||||
|
||||
after(async() => {
|
||||
takeScreenshot();
|
||||
});
|
||||
});
|
||||
|
||||
describe('Usage', async() => {
|
||||
|
@ -51,9 +46,5 @@ describe('Welcome screen', () => {
|
|||
await waitFor(element(by.id('legal-view'))).toBeVisible().withTimeout(2000);
|
||||
await expect(element(by.id('legal-view'))).toBeVisible();
|
||||
});
|
||||
|
||||
afterEach(async() => {
|
||||
takeScreenshot();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
const {
|
||||
device, expect, element, by, waitFor
|
||||
} = require('detox');
|
||||
const { takeScreenshot } = require('./helpers/screenshot');
|
||||
const { tapBack } = require('./helpers/app');
|
||||
|
||||
describe('Legal screen', () => {
|
||||
|
@ -22,10 +21,6 @@ describe('Legal screen', () => {
|
|||
it('should have privacy policy button', async() => {
|
||||
await expect(element(by.id('legal-privacy-button'))).toBeVisible();
|
||||
});
|
||||
|
||||
after(async() => {
|
||||
takeScreenshot();
|
||||
});
|
||||
});
|
||||
|
||||
describe('Usage', async() => {
|
||||
|
@ -48,9 +43,5 @@ describe('Legal screen', () => {
|
|||
await waitFor(element(by.id('welcome-view'))).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.id('welcome-view'))).toBeVisible();
|
||||
});
|
||||
|
||||
afterEach(async() => {
|
||||
takeScreenshot();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
const {
|
||||
device, expect, element, by, waitFor
|
||||
} = require('detox');
|
||||
const { takeScreenshot } = require('./helpers/screenshot');
|
||||
const data = require('./data');
|
||||
|
||||
describe('Forgot password screen', () => {
|
||||
|
@ -24,10 +23,6 @@ describe('Forgot password screen', () => {
|
|||
it('should have submit button', async() => {
|
||||
await expect(element(by.id('forgot-password-view-submit'))).toBeVisible();
|
||||
});
|
||||
|
||||
after(async() => {
|
||||
takeScreenshot();
|
||||
});
|
||||
});
|
||||
|
||||
describe('Usage', async() => {
|
||||
|
@ -38,9 +33,5 @@ describe('Forgot password screen', () => {
|
|||
await waitFor(element(by.id('login-view'))).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.id('login-view'))).toBeVisible();
|
||||
});
|
||||
|
||||
afterEach(async() => {
|
||||
takeScreenshot();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
const {
|
||||
device, expect, element, by, waitFor
|
||||
} = require('detox');
|
||||
const { takeScreenshot } = require('./helpers/screenshot');
|
||||
const { logout, sleep } = require('./helpers/app');
|
||||
const data = require('./data');
|
||||
|
||||
|
@ -19,7 +18,7 @@ async function navigateToRegister() {
|
|||
|
||||
describe('Create user screen', () => {
|
||||
before(async() => {
|
||||
await device.reloadReactNative();
|
||||
await device.launchApp({ newInstance: true });
|
||||
await navigateToRegister();
|
||||
});
|
||||
|
||||
|
@ -51,15 +50,11 @@ describe('Create user screen', () => {
|
|||
it('should have legal button', async() => {
|
||||
await expect(element(by.id('register-view-more'))).toBeVisible();
|
||||
});
|
||||
|
||||
after(async() => {
|
||||
takeScreenshot();
|
||||
});
|
||||
});
|
||||
|
||||
describe('Usage', () => {
|
||||
// FIXME: Detox isn't able to check if it's tappable: https://github.com/wix/Detox/issues/246
|
||||
// it.only('should submit invalid email and do nothing', async() => {
|
||||
// it('should submit invalid email and do nothing', async() => {
|
||||
// const invalidEmail = 'invalidemail';
|
||||
// await element(by.id('register-view-name')).replaceText(data.user);
|
||||
// await element(by.id('register-view-username')).replaceText(data.user);
|
||||
|
@ -74,18 +69,20 @@ describe('Create user screen', () => {
|
|||
await element(by.id('register-view-username')).replaceText(data.user);
|
||||
await element(by.id('register-view-email')).replaceText(data.existingEmail);
|
||||
await element(by.id('register-view-password')).replaceText(data.password);
|
||||
await sleep(300);
|
||||
await element(by.id('register-view-submit')).tap();
|
||||
await waitFor(element(by.text('Email already exists. [403]')).atIndex(0)).toExist().withTimeout(10000);
|
||||
await expect(element(by.text('Email already exists. [403]')).atIndex(0)).toExist();
|
||||
await element(by.text('OK')).tap();
|
||||
});
|
||||
|
||||
it('should submit email already taken and raise error', async() => {
|
||||
it('should submit username already taken and raise error', async() => {
|
||||
const invalidEmail = 'invalidemail';
|
||||
await element(by.id('register-view-name')).replaceText(data.user);
|
||||
await element(by.id('register-view-username')).replaceText(data.existingName);
|
||||
await element(by.id('register-view-email')).replaceText(data.email);
|
||||
await element(by.id('register-view-password')).replaceText(data.password);
|
||||
await sleep(300);
|
||||
await element(by.id('register-view-submit')).tap();
|
||||
await waitFor(element(by.text('Username is already in use')).atIndex(0)).toExist().withTimeout(10000);
|
||||
await expect(element(by.text('Username is already in use')).atIndex(0)).toExist();
|
||||
|
@ -97,15 +94,12 @@ describe('Create user screen', () => {
|
|||
await element(by.id('register-view-username')).replaceText(data.user);
|
||||
await element(by.id('register-view-email')).replaceText(data.email);
|
||||
await element(by.id('register-view-password')).replaceText(data.password);
|
||||
await sleep(300);
|
||||
await element(by.id('register-view-submit')).tap();
|
||||
await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.id('rooms-list-view'))).toBeVisible();
|
||||
});
|
||||
|
||||
afterEach(async() => {
|
||||
takeScreenshot();
|
||||
});
|
||||
|
||||
after(async() => {
|
||||
await logout();
|
||||
});
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
const {
|
||||
device, expect, element, by, waitFor
|
||||
} = require('detox');
|
||||
const { takeScreenshot } = require('./helpers/screenshot');
|
||||
const { navigateToLogin, tapBack } = require('./helpers/app');
|
||||
const { navigateToLogin, tapBack, sleep } = require('./helpers/app');
|
||||
const data = require('./data');
|
||||
|
||||
describe('Login screen', () => {
|
||||
|
@ -42,10 +41,6 @@ describe('Login screen', () => {
|
|||
it('should have legal button', async() => {
|
||||
await expect(element(by.id('login-view-more'))).toBeVisible();
|
||||
});
|
||||
|
||||
after(async() => {
|
||||
takeScreenshot();
|
||||
});
|
||||
});
|
||||
|
||||
describe('Usage', () => {
|
||||
|
@ -66,6 +61,7 @@ describe('Login screen', () => {
|
|||
it('should insert wrong password and get error', async() => {
|
||||
await element(by.id('login-view-email')).replaceText(data.user);
|
||||
await element(by.id('login-view-password')).replaceText('error');
|
||||
await sleep(300);
|
||||
await element(by.id('login-view-submit')).tap();
|
||||
await waitFor(element(by.text('Your credentials were rejected! Please try again.'))).toBeVisible().withTimeout(10000);
|
||||
await expect(element(by.text('Your credentials were rejected! Please try again.'))).toBeVisible();
|
||||
|
@ -74,13 +70,10 @@ describe('Login screen', () => {
|
|||
|
||||
it('should login with success', async() => {
|
||||
await element(by.id('login-view-password')).replaceText(data.password);
|
||||
await sleep(300);
|
||||
await element(by.id('login-view-submit')).tap();
|
||||
await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.id('rooms-list-view'))).toBeVisible();
|
||||
});
|
||||
|
||||
afterEach(async() => {
|
||||
takeScreenshot();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
@ -1,21 +1,20 @@
|
|||
const {
|
||||
device, expect, element, by, waitFor
|
||||
} = require('detox');
|
||||
const { takeScreenshot } = require('./helpers/screenshot');
|
||||
const { login, navigateToLogin, tapBack, sleep } = require('./helpers/app');
|
||||
const { login, logout, navigateToLogin, tapBack, sleep } = require('./helpers/app');
|
||||
const data = require('./data');
|
||||
|
||||
describe('Rooms list screen', () => {
|
||||
describe('Render', async() => {
|
||||
it('should have rooms list screen', async() => {
|
||||
await expect(element(by.id('rooms-list-view'))).toBeVisible();
|
||||
});
|
||||
});
|
||||
|
||||
// it('should have rooms list', async() => {
|
||||
// it('should have rooms list', async() => {
|
||||
// await expect(element(by.id('rooms-list-view-list'))).toBeVisible();
|
||||
// });
|
||||
|
||||
it('should have room item', async() => {
|
||||
it('should have room item', async() => {
|
||||
await expect(element(by.id('rooms-list-view-item-general')).atIndex(0)).toExist();
|
||||
});
|
||||
|
||||
|
@ -30,33 +29,25 @@ describe('Rooms list screen', () => {
|
|||
// await expect(element(by.id('rooms-list-view-sidebar'))).toHaveLabel(`Connected to ${ data.server }. Tap to view servers list.`);
|
||||
});
|
||||
});
|
||||
|
||||
after(async() => {
|
||||
takeScreenshot();
|
||||
});
|
||||
});
|
||||
|
||||
describe('Usage', async() => {
|
||||
it('should search room and navigate', async() => {
|
||||
// await element(by.id('rooms-list-view-list')).swipe('down');
|
||||
// await waitFor(element(by.id('rooms-list-view-search'))).toBeVisible().withTimeout(2000);
|
||||
// await expect(element(by.id('rooms-list-view-search'))).toBeVisible();
|
||||
|
||||
await element(by.type('UIScrollView')).atIndex(1).scrollTo('top');
|
||||
await waitFor(element(by.id('rooms-list-view-search'))).toExist().withTimeout(2000);
|
||||
|
||||
await element(by.id('rooms-list-view-search')).replaceText('rocket.cat');
|
||||
await element(by.id('rooms-list-view-search')).typeText('rocket.cat');
|
||||
await sleep(2000);
|
||||
await waitFor(element(by.id('rooms-list-view-item-rocket.cat'))).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.id('rooms-list-view-item-rocket.cat'))).toBeVisible();
|
||||
await element(by.id('rooms-list-view-item-rocket.cat')).tap();
|
||||
await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(10000);
|
||||
await expect(element(by.id('room-view'))).toBeVisible();
|
||||
await waitFor(element(by.text('rocket.cat'))).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.text('rocket.cat'))).toBeVisible();
|
||||
await waitFor(element(by.id('room-view-title-rocket.cat'))).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.id('room-view-title-rocket.cat'))).toBeVisible();
|
||||
await tapBack();
|
||||
await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(2000);
|
||||
await expect(element(by.id('rooms-list-view'))).toBeVisible();
|
||||
await element(by.id('rooms-list-view-search')).replaceText('');
|
||||
// await element(by.id('rooms-list-view-search')).typeText('');
|
||||
await sleep(2000);
|
||||
await waitFor(element(by.id('rooms-list-view-item-rocket.cat'))).toExist().withTimeout(60000);
|
||||
await expect(element(by.id('rooms-list-view-item-rocket.cat'))).toExist();
|
||||
|
@ -78,19 +69,10 @@ describe('Rooms list screen', () => {
|
|||
});
|
||||
|
||||
it('should logout', async() => {
|
||||
await element(by.id('rooms-list-view-sidebar')).tap();
|
||||
await waitFor(element(by.id('sidebar-view'))).toBeVisible().withTimeout(2000);
|
||||
await waitFor(element(by.id('sidebar-logout'))).toBeVisible().withTimeout(2000);
|
||||
await element(by.id('sidebar-logout')).tap();
|
||||
await waitFor(element(by.id('onboarding-view'))).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.id('onboarding-view'))).toBeVisible();
|
||||
await logout();
|
||||
});
|
||||
});
|
||||
|
||||
afterEach(async() => {
|
||||
takeScreenshot();
|
||||
});
|
||||
|
||||
after(async() => {
|
||||
await navigateToLogin();
|
||||
await login();
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
const {
|
||||
device, expect, element, by, waitFor
|
||||
} = require('detox');
|
||||
const { takeScreenshot } = require('./helpers/screenshot');
|
||||
const data = require('./data');
|
||||
const { tapBack, sleep } = require('./helpers/app');
|
||||
|
||||
|
@ -9,7 +8,7 @@ describe('Create room screen', () => {
|
|||
before(async() => {
|
||||
await sleep(5000);
|
||||
await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(2000);
|
||||
await device.reloadReactNative();
|
||||
await device.launchApp({ newInstance: true });
|
||||
await element(by.id('rooms-list-view-create-channel')).tap();
|
||||
await waitFor(element(by.id('new-message-view'))).toBeVisible().withTimeout(2000);
|
||||
});
|
||||
|
@ -24,19 +23,17 @@ describe('Create room screen', () => {
|
|||
await waitFor(element(by.id('new-message-view-search'))).toExist().withTimeout(2000);
|
||||
await expect(element(by.id('new-message-view-search'))).toExist();
|
||||
});
|
||||
|
||||
after(async() => {
|
||||
takeScreenshot();
|
||||
});
|
||||
})
|
||||
|
||||
describe('Usage', async() => {
|
||||
it('should back to rooms list', async() => {
|
||||
await sleep(1000);
|
||||
await element(by.id('new-message-view-close')).tap();
|
||||
await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(2000);
|
||||
await expect(element(by.id('rooms-list-view'))).toBeVisible();
|
||||
await element(by.id('rooms-list-view-create-channel')).tap();
|
||||
await waitFor(element(by.id('new-message-view'))).toBeVisible().withTimeout(2000);
|
||||
await expect(element(by.id('new-message-view'))).toBeVisible();
|
||||
});
|
||||
|
||||
it('should search user and navigate', async() => {
|
||||
|
@ -46,23 +43,21 @@ describe('Create room screen', () => {
|
|||
await element(by.id('new-message-view-item-rocket.cat')).tap();
|
||||
await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(10000);
|
||||
await expect(element(by.id('room-view'))).toBeVisible();
|
||||
await waitFor(element(by.text('rocket.cat'))).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.text('rocket.cat'))).toBeVisible();
|
||||
await waitFor(element(by.id('room-view-title-rocket.cat'))).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.id('room-view-title-rocket.cat'))).toBeVisible();
|
||||
await tapBack();
|
||||
await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(2000);
|
||||
await element(by.id('rooms-list-view-create-channel')).tap();
|
||||
});
|
||||
|
||||
it('should navigate to select users', async() => {
|
||||
await element(by.id('rooms-list-view-create-channel')).tap();
|
||||
await waitFor(element(by.id('new-message-view'))).toBeVisible().withTimeout(2000);
|
||||
await expect(element(by.id('new-message-view'))).toBeVisible();
|
||||
await sleep(1000);
|
||||
await element(by.id('new-message-view-create-channel')).tap();
|
||||
await waitFor(element(by.id('select-users-view'))).toBeVisible().withTimeout(2000);
|
||||
await expect(element(by.id('select-users-view'))).toBeVisible();
|
||||
});
|
||||
|
||||
|
||||
after(async() => {
|
||||
takeScreenshot();
|
||||
});
|
||||
})
|
||||
});
|
||||
|
||||
|
@ -114,11 +109,12 @@ describe('Create room screen', () => {
|
|||
const room = `public${ data.random }`;
|
||||
await element(by.id('create-channel-name')).replaceText(room);
|
||||
await element(by.id('create-channel-type')).tap();
|
||||
await sleep(1000);
|
||||
await element(by.id('create-channel-submit')).tap();
|
||||
await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.id('room-view'))).toBeVisible();
|
||||
await waitFor(element(by.text(room))).toExist().withTimeout(60000);
|
||||
await expect(element(by.text(room))).toExist();
|
||||
await waitFor(element(by.id(`room-view-title-${ room }`))).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.id(`room-view-title-${ room }`))).toBeVisible();
|
||||
await tapBack();
|
||||
await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(2000);
|
||||
await waitFor(element(by.id(`rooms-list-view-item-${ room }`))).toBeVisible().withTimeout(60000);
|
||||
|
@ -128,25 +124,27 @@ describe('Create room screen', () => {
|
|||
it('should create private room', async() => {
|
||||
const room = `private${ data.random }`;
|
||||
await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(2000);
|
||||
await device.reloadReactNative();
|
||||
// await device.launchApp({ newInstance: true });
|
||||
await sleep(1000);
|
||||
await element(by.id('rooms-list-view-create-channel')).tap();
|
||||
await waitFor(element(by.id('new-message-view'))).toBeVisible().withTimeout(2000);
|
||||
await sleep(1000);
|
||||
await element(by.id('new-message-view-create-channel')).tap();
|
||||
await waitFor(element(by.id('select-users-view'))).toBeVisible().withTimeout(2000);
|
||||
await sleep(1000);
|
||||
await element(by.id('select-users-view-item-rocket.cat')).tap();
|
||||
await waitFor(element(by.id('selected-user-rocket.cat'))).toBeVisible().withTimeout(5000);
|
||||
await element(by.id('selected-users-view-submit')).tap();
|
||||
await waitFor(element(by.id('create-channel-view'))).toBeVisible().withTimeout(5000);
|
||||
await waitFor(element(by.id('create-channel-view'))).toExist().withTimeout(5000);
|
||||
await element(by.id('create-channel-name')).replaceText(room);
|
||||
await sleep(1000);
|
||||
await element(by.id('create-channel-submit')).tap();
|
||||
await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.id('room-view'))).toBeVisible();
|
||||
await waitFor(element(by.text(room))).toExist().withTimeout(60000);
|
||||
await expect(element(by.text(room))).toExist();
|
||||
await waitFor(element(by.id(`room-view-title-${ room }`))).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.id(`room-view-title-${ room }`))).toBeVisible();
|
||||
await tapBack();
|
||||
await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(2000);
|
||||
await element(by.id('rooms-list-view-search')).replaceText(room);
|
||||
await sleep(2000);
|
||||
await waitFor(element(by.id(`rooms-list-view-item-${ room }`))).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.id(`rooms-list-view-item-${ room }`))).toBeVisible();
|
||||
});
|
||||
|
@ -154,30 +152,28 @@ describe('Create room screen', () => {
|
|||
it('should create empty room', async() => {
|
||||
const room = `empty${ data.random }`;
|
||||
await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(2000);
|
||||
await device.reloadReactNative();
|
||||
// await device.launchApp({ newInstance: true });
|
||||
await sleep(1000);
|
||||
await element(by.id('rooms-list-view-create-channel')).tap();
|
||||
await waitFor(element(by.id('new-message-view'))).toBeVisible().withTimeout(2000);
|
||||
await sleep(1000);
|
||||
await element(by.id('new-message-view-create-channel')).tap();
|
||||
await waitFor(element(by.id('select-users-view'))).toBeVisible().withTimeout(2000);
|
||||
await sleep(1000);
|
||||
await element(by.id('selected-users-view-submit')).tap();
|
||||
await waitFor(element(by.id('create-channel-view'))).toBeVisible().withTimeout(5000);
|
||||
await waitFor(element(by.id('create-channel-view'))).toExist().withTimeout(5000);
|
||||
await element(by.id('create-channel-name')).replaceText(room);
|
||||
await sleep(1000);
|
||||
await element(by.id('create-channel-submit')).tap();
|
||||
await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.id('room-view'))).toBeVisible();
|
||||
await waitFor(element(by.text(room))).toExist().withTimeout(60000);
|
||||
await expect(element(by.text(room))).toExist();
|
||||
await waitFor(element(by.id(`room-view-title-${ room }`))).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.id(`room-view-title-${ room }`))).toBeVisible();
|
||||
await tapBack();
|
||||
await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(2000);
|
||||
await element(by.id('rooms-list-view-search')).replaceText(room);
|
||||
await sleep(2000);
|
||||
await waitFor(element(by.id(`rooms-list-view-item-${ room }`))).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.id(`rooms-list-view-item-${ room }`))).toBeVisible();
|
||||
});
|
||||
})
|
||||
|
||||
afterEach(async() => {
|
||||
takeScreenshot();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
const {
|
||||
device, expect, element, by, waitFor
|
||||
} = require('detox');
|
||||
const { takeScreenshot } = require('./helpers/screenshot');
|
||||
const data = require('./data');
|
||||
const { tapBack, sleep } = require('./helpers/app');
|
||||
|
||||
|
@ -9,15 +8,17 @@ async function mockMessage(message) {
|
|||
await element(by.id('messagebox-input')).tap();
|
||||
await element(by.id('messagebox-input')).typeText(`${ data.random }${ message }`);
|
||||
await element(by.id('messagebox-send-message')).tap();
|
||||
await waitFor(element(by.text(`${ data.random }${ message }`))).toExist().withTimeout(60000);
|
||||
await waitFor(element(by.label(`${ data.random }${ message }`)).atIndex(0)).toExist().withTimeout(60000);
|
||||
await expect(element(by.label(`${ data.random }${ message }`)).atIndex(0)).toBeVisible();
|
||||
};
|
||||
|
||||
async function navigateToRoom() {
|
||||
await element(by.id('rooms-list-view-search')).replaceText(`private${ data.random }`);
|
||||
await element(by.type('UIScrollView')).atIndex(1).scrollTo('top');
|
||||
await element(by.id('rooms-list-view-search')).typeText(`private${ data.random }`);
|
||||
await sleep(2000);
|
||||
await waitFor(element(by.id(`rooms-list-view-item-private${ data.random }`))).toBeVisible().withTimeout(60000);
|
||||
await element(by.id(`rooms-list-view-item-private${ data.random }`)).tap();
|
||||
await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000);
|
||||
await waitFor(element(by.id(`rooms-list-view-item-private${ data.random }`))).toBeVisible().withTimeout(60000);
|
||||
await element(by.id(`rooms-list-view-item-private${ data.random }`)).tap();
|
||||
await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000);
|
||||
}
|
||||
|
||||
describe('Room screen', () => {
|
||||
|
@ -34,15 +35,15 @@ describe('Room screen', () => {
|
|||
await expect(element(by.id(`room-view-title-${ mainRoom }`))).toBeVisible();
|
||||
});
|
||||
|
||||
it('should have messages list', async() => {
|
||||
await expect(element(by.id('room-view-messages'))).toBeVisible();
|
||||
});
|
||||
|
||||
// Render - Header
|
||||
describe('Header', async() => {
|
||||
it('should have actions button ', async() => {
|
||||
await expect(element(by.id('room-view-header-actions'))).toBeVisible();
|
||||
});
|
||||
|
||||
it('should have threads button ', async() => {
|
||||
await expect(element(by.id('room-view-header-threads'))).toBeVisible();
|
||||
});
|
||||
});
|
||||
|
||||
// Render - Messagebox
|
||||
|
@ -69,36 +70,21 @@ describe('Room screen', () => {
|
|||
await expect(element(by.id('messagebox-actions'))).toBeVisible();
|
||||
});
|
||||
});
|
||||
|
||||
after(async() => {
|
||||
takeScreenshot();
|
||||
});
|
||||
});
|
||||
|
||||
describe('Usage', async() => {
|
||||
describe('Header', async() => {
|
||||
it('should back to rooms list', async() => {
|
||||
await tapBack();
|
||||
await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(2000);
|
||||
await expect(element(by.id('rooms-list-view'))).toBeVisible();
|
||||
await navigateToRoom();
|
||||
});
|
||||
|
||||
it('should tap on more and navigate to room actions', async() => {
|
||||
await element(by.id('room-view-header-actions')).tap();
|
||||
await waitFor(element(by.id('room-actions-view'))).toBeVisible().withTimeout(2000);
|
||||
await expect(element(by.id('room-actions-view'))).toBeVisible();
|
||||
await tapBack();
|
||||
await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(2000);
|
||||
});
|
||||
});
|
||||
|
||||
describe('Messagebox', async() => {
|
||||
it('should send message', async() => {
|
||||
await mockMessage('message');
|
||||
await expect(element(by.text(`${ data.random }message`))).toExist();
|
||||
await mockMessage('message')
|
||||
await expect(element(by.label(`${ data.random }message`)).atIndex(0)).toExist();
|
||||
});
|
||||
|
||||
it('should ask for review', async() => {
|
||||
await waitFor(element(by.text('Are you enjoying this app?'))).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.text('Are you enjoying this app?')).atIndex(0)).toExist();
|
||||
await element(by.label('No').and(by.type('_UIAlertControllerActionView'))).tap(); // Tap `no` on ask for review alert
|
||||
})
|
||||
|
||||
it('should show/hide emoji keyboard', async () => {
|
||||
if (device.getPlatform() === 'android') {
|
||||
await element(by.id('messagebox-open-emoji')).tap();
|
||||
|
@ -116,8 +102,7 @@ describe('Room screen', () => {
|
|||
|
||||
it('should show/hide emoji autocomplete', async() => {
|
||||
await element(by.id('messagebox-input')).tap();
|
||||
await element(by.id('messagebox-input')).replaceText(':');
|
||||
await element(by.id('messagebox-input')).typeText('joy'); // workaround for number keyboard
|
||||
await element(by.id('messagebox-input')).typeText(':joy');
|
||||
await waitFor(element(by.id('messagebox-container'))).toBeVisible().withTimeout(10000);
|
||||
await expect(element(by.id('messagebox-container'))).toBeVisible();
|
||||
await element(by.id('messagebox-input')).clearText();
|
||||
|
@ -146,7 +131,8 @@ describe('Room screen', () => {
|
|||
await element(by.id('messagebox-input')).tap();
|
||||
await element(by.id('messagebox-input')).typeText(`${ data.random }mention`);
|
||||
await element(by.id('messagebox-send-message')).tap();
|
||||
await waitFor(element(by.text(`@${ data.user } ${ data.random }mention`))).toBeVisible().withTimeout(60000);
|
||||
// await waitFor(element(by.label(`@${ data.user } ${ data.random }mention`)).atIndex(0)).toBeVisible().withTimeout(60000);
|
||||
await sleep(2000);
|
||||
});
|
||||
|
||||
it('should show and tap on room autocomplete', async() => {
|
||||
|
@ -158,80 +144,47 @@ describe('Room screen', () => {
|
|||
await expect(element(by.id('messagebox-input'))).toHaveText('#general ');
|
||||
await element(by.id('messagebox-input')).clearText();
|
||||
});
|
||||
|
||||
// it('should show and tap on slash command autocomplete and send slash command', async() => {
|
||||
// await element(by.id('messagebox-input')).tap();
|
||||
// await element(by.id('messagebox-input')).typeText('/');
|
||||
// await waitFor(element(by.id('messagebox-container'))).toBeVisible().withTimeout(10000);
|
||||
// await expect(element(by.id('messagebox-container'))).toBeVisible();
|
||||
// await element(by.id('mention-item-shrug')).tap();
|
||||
// await expect(element(by.id('messagebox-input'))).toHaveText('/shrug ');
|
||||
// await element(by.id('messagebox-input')).typeText('joy'); // workaround for number keyboard
|
||||
// await element(by.id('messagebox-send-message')).tap();
|
||||
// await waitFor(element(by.text(`joy ¯\_(ツ)_/¯`))).toBeVisible().withTimeout(60000);
|
||||
// });
|
||||
|
||||
// it('should show command Preview', async() => {
|
||||
// await element(by.id('messagebox-input')).tap();
|
||||
// await element(by.id('messagebox-input')).replaceText('/giphy');
|
||||
// await waitFor(element(by.id('messagebox-container'))).toBeVisible().withTimeout(10000);
|
||||
// await expect(element(by.id('messagebox-container'))).toBeVisible();
|
||||
// await element(by.id('mention-item-giphy')).tap();
|
||||
// await expect(element(by.id('messagebox-input'))).toHaveText('/giphy ');
|
||||
// await element(by.id('messagebox-input')).typeText('no'); // workaround for number keyboard
|
||||
// await waitFor(element(by.id('commandbox-container'))).toBeVisible().withTimeout(10000);
|
||||
// await expect(element(by.id('commandbox-container'))).toBeVisible();
|
||||
// await element(by.id('messagebox-input')).clearText();
|
||||
// });
|
||||
});
|
||||
|
||||
describe('Message', async() => {
|
||||
it('should show message actions', async() => {
|
||||
await element(by.text(`${ data.random }message`)).longPress();
|
||||
await waitFor(element(by.text('Message actions'))).toBeVisible().withTimeout(5000);
|
||||
await expect(element(by.text('Message actions'))).toBeVisible();
|
||||
await element(by.text('Cancel')).tap();
|
||||
await waitFor(element(by.text('Cancel'))).toBeNotVisible().withTimeout(2000);
|
||||
});
|
||||
|
||||
it('should copy permalink', async() => {
|
||||
await element(by.text(`${ data.random }message`)).longPress();
|
||||
await sleep(1000);
|
||||
await element(by.label(`${ data.random }message`)).atIndex(0).tap();
|
||||
await element(by.label(`${ data.random }message`)).atIndex(0).longPress();
|
||||
await waitFor(element(by.text('Message actions'))).toBeVisible().withTimeout(5000);
|
||||
await expect(element(by.text('Message actions'))).toBeVisible();
|
||||
await element(by.text('Permalink')).tap();
|
||||
// await expect(element(by.text('Permalink copied to clipboard!'))).toBeVisible();
|
||||
await waitFor(element(by.text('Permalink copied to clipboard!'))).toBeVisible().withTimeout(5000);
|
||||
await waitFor(element(by.text('Permalink copied to clipboard!'))).toBeNotVisible().withTimeout(5000);
|
||||
await sleep(1000);
|
||||
|
||||
// TODO: test clipboard
|
||||
});
|
||||
|
||||
it('should copy message', async() => {
|
||||
await element(by.text(`${ data.random }message`)).longPress();
|
||||
await element(by.label(`${ data.random }message`)).atIndex(0).longPress();
|
||||
await waitFor(element(by.text('Message actions'))).toBeVisible().withTimeout(5000);
|
||||
await expect(element(by.text('Message actions'))).toBeVisible();
|
||||
await element(by.text('Copy')).tap();
|
||||
// await expect(element(by.text('Copied to clipboard!'))).toBeVisible();
|
||||
await waitFor(element(by.text('Copied to clipboard!'))).toBeVisible().withTimeout(5000);
|
||||
await waitFor(element(by.text('Copied to clipboard!'))).toBeNotVisible().withTimeout(5000);
|
||||
await sleep(1000);
|
||||
// TODO: test clipboard
|
||||
});
|
||||
|
||||
it('should star message', async() => {
|
||||
await element(by.text(`${ data.random }message`)).longPress();
|
||||
await element(by.label(`${ data.random }message`)).atIndex(0).longPress();
|
||||
await waitFor(element(by.text('Message actions'))).toBeVisible().withTimeout(5000);
|
||||
await expect(element(by.text('Message actions'))).toBeVisible();
|
||||
await element(by.text('Star')).tap();
|
||||
await sleep(2000);
|
||||
await waitFor(element(by.text('Message actions'))).toBeNotVisible().withTimeout(5000);
|
||||
await element(by.text(`${ data.random }message`)).longPress();
|
||||
await element(by.label(`${ data.random }message`)).atIndex(0).longPress();
|
||||
await waitFor(element(by.text('Unstar'))).toBeVisible().withTimeout(2000);
|
||||
await expect(element(by.text('Unstar'))).toBeVisible();
|
||||
await element(by.text('Cancel')).tap();
|
||||
await waitFor(element(by.text('Cancel'))).toBeNotVisible().withTimeout(2000);
|
||||
await sleep(1000);
|
||||
});
|
||||
|
||||
it('should react to message', async() => {
|
||||
await element(by.text(`${ data.random }message`)).longPress();
|
||||
await element(by.label(`${ data.random }message`)).atIndex(0).longPress();
|
||||
await waitFor(element(by.text('Message actions'))).toBeVisible().withTimeout(5000);
|
||||
await expect(element(by.text('Message actions'))).toBeVisible();
|
||||
await element(by.text('Add Reaction')).tap();
|
||||
|
@ -243,6 +196,7 @@ describe('Room screen', () => {
|
|||
await element(by.id('reaction-picker-grinning')).tap();
|
||||
await waitFor(element(by.id('message-reaction-:grinning:'))).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.id('message-reaction-:grinning:'))).toBeVisible();
|
||||
await sleep(1000);
|
||||
});
|
||||
|
||||
it('should show reaction picker on add reaction button pressed and have frequently used emoji', async() => {
|
||||
|
@ -255,6 +209,7 @@ describe('Room screen', () => {
|
|||
await waitFor(element(by.id('reaction-picker-grimacing'))).toBeVisible().withTimeout(2000);
|
||||
await element(by.id('reaction-picker-grimacing')).tap();
|
||||
await waitFor(element(by.id('message-reaction-:grimacing:'))).toBeVisible().withTimeout(60000);
|
||||
await sleep(1000);
|
||||
});
|
||||
|
||||
it('should remove reaction', async() => {
|
||||
|
@ -265,37 +220,38 @@ describe('Room screen', () => {
|
|||
|
||||
it('should edit message', async() => {
|
||||
await mockMessage('edit');
|
||||
await element(by.text(`${ data.random }edit`)).longPress();
|
||||
await element(by.label(`${ data.random }edit`)).atIndex(0).longPress();
|
||||
await waitFor(element(by.text('Message actions'))).toBeVisible().withTimeout(5000);
|
||||
await expect(element(by.text('Message actions'))).toBeVisible();
|
||||
await element(by.text('Edit')).tap();
|
||||
await element(by.id('messagebox-input')).typeText('ed');
|
||||
await element(by.id('messagebox-send-message')).tap();
|
||||
await waitFor(element(by.text(`${ data.random }edited (edited)`))).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.text(`${ data.random }edited (edited)`))).toBeVisible();
|
||||
await waitFor(element(by.label(`${ data.random }edited (edited)`)).atIndex(0)).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.label(`${ data.random }edited (edited)`)).atIndex(0)).toBeVisible();
|
||||
});
|
||||
|
||||
it('should quote message', async() => {
|
||||
await mockMessage('quote');
|
||||
await element(by.text(`${ data.random }quote`)).longPress();
|
||||
await element(by.label(`${ data.random }quote`)).atIndex(0).longPress();
|
||||
await waitFor(element(by.text('Message actions'))).toBeVisible().withTimeout(5000);
|
||||
await expect(element(by.text('Message actions'))).toBeVisible();
|
||||
await element(by.text('Quote')).tap();
|
||||
await element(by.id('messagebox-input')).typeText(`${ data.random }quoted`);
|
||||
await element(by.id('messagebox-send-message')).tap();
|
||||
// TODO: test if quote was sent
|
||||
await sleep(2000);
|
||||
});
|
||||
|
||||
it('should pin message', async() => {
|
||||
await waitFor(element(by.text(`${ data.random }edited (edited)`))).toBeVisible().whileElement(by.id('room-view-messages')).scroll(200, 'up');
|
||||
await element(by.text(`${ data.random }edited (edited)`)).longPress();
|
||||
await waitFor(element(by.label(`${ data.random }edited (edited)`)).atIndex(0)).toBeVisible();
|
||||
await element(by.label(`${ data.random }edited (edited)`)).atIndex(0).longPress();
|
||||
await waitFor(element(by.text('Message actions'))).toBeVisible().withTimeout(5000);
|
||||
await expect(element(by.text('Message actions'))).toBeVisible();
|
||||
await element(by.text('Pin')).tap();
|
||||
await waitFor(element(by.text('Message actions'))).toBeNotVisible().withTimeout(5000);
|
||||
await waitFor(element(by.text(`${ data.random }edited (edited)`))).toBeVisible().whileElement(by.id('room-view-messages')).scroll(200, 'up');
|
||||
await waitFor(element(by.text(`${ data.random }edited (edited)`)).atIndex(1)).toBeVisible().withTimeout(60000);
|
||||
await element(by.text(`${ data.random }edited (edited)`)).atIndex(0).longPress();
|
||||
await waitFor(element(by.label('Message pinned')).atIndex(0)).toBeVisible().withTimeout(5000);
|
||||
await waitFor(element(by.label(`${ data.random }edited (edited)`)).atIndex(0)).toBeVisible().withTimeout(60000);
|
||||
await element(by.label(`${ data.random }edited (edited)`)).atIndex(0).longPress();
|
||||
await waitFor(element(by.text('Unpin'))).toBeVisible().withTimeout(2000);
|
||||
await expect(element(by.text('Unpin'))).toBeVisible();
|
||||
await element(by.text('Cancel')).tap();
|
||||
|
@ -309,7 +265,7 @@ describe('Room screen', () => {
|
|||
const thread = `${ data.random }thread`;
|
||||
it('should create thread', async() => {
|
||||
await mockMessage('thread');
|
||||
await element(by.text(thread)).longPress();
|
||||
await element(by.label(thread)).atIndex(0).longPress();
|
||||
await waitFor(element(by.text('Message actions'))).toBeVisible().withTimeout(5000);
|
||||
await expect(element(by.text('Message actions'))).toBeVisible();
|
||||
await element(by.text('Reply')).tap();
|
||||
|
@ -325,6 +281,7 @@ describe('Room screen', () => {
|
|||
await waitFor(element(by.id(`room-view-title-${ thread }`))).toBeVisible().withTimeout(5000);
|
||||
await expect(element(by.id(`room-view-title-${ thread }`))).toBeVisible();
|
||||
await tapBack();
|
||||
await sleep(1000);
|
||||
});
|
||||
|
||||
it('should toggle follow thread', async() => {
|
||||
|
@ -339,11 +296,12 @@ describe('Room screen', () => {
|
|||
await waitFor(element(by.id('room-view-header-unfollow'))).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.id('room-view-header-unfollow'))).toBeVisible();
|
||||
await tapBack();
|
||||
await sleep(1000);
|
||||
});
|
||||
|
||||
it('should navigate to thread from thread name', async() => {
|
||||
await mockMessage('dummymessagebetweenthethread');
|
||||
await element(by.text(thread)).longPress();
|
||||
await element(by.label(thread)).atIndex(0).longPress();
|
||||
await waitFor(element(by.text('Message actions'))).toBeVisible().withTimeout(5000);
|
||||
await expect(element(by.text('Message actions'))).toBeVisible();
|
||||
await element(by.text('Reply')).tap();
|
||||
|
@ -357,6 +315,7 @@ describe('Room screen', () => {
|
|||
await waitFor(element(by.id(`room-view-title-${ thread }`))).toBeVisible().withTimeout(5000);
|
||||
await expect(element(by.id(`room-view-title-${ thread }`))).toBeVisible();
|
||||
await tapBack();
|
||||
await sleep(1000);
|
||||
});
|
||||
|
||||
it('should navigate to thread from threads view', async() => {
|
||||
|
@ -374,10 +333,6 @@ describe('Room screen', () => {
|
|||
});
|
||||
});
|
||||
|
||||
afterEach(async() => {
|
||||
takeScreenshot();
|
||||
});
|
||||
|
||||
after(async() => {
|
||||
await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000);
|
||||
await tapBack();
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
const {
|
||||
device, expect, element, by, waitFor
|
||||
} = require('detox');
|
||||
const { takeScreenshot } = require('./helpers/screenshot');
|
||||
const data = require('./data');
|
||||
const { tapBack, sleep } = require('./helpers/app');
|
||||
|
||||
|
@ -15,11 +14,13 @@ async function navigateToRoomActions(type) {
|
|||
room = `private${ data.random }`;
|
||||
}
|
||||
await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(10000);
|
||||
await element(by.id('rooms-list-view-search')).replaceText(room);
|
||||
await element(by.type('UIScrollView')).atIndex(1).scrollTo('top');
|
||||
await element(by.id('rooms-list-view-search')).typeText(room);
|
||||
await sleep(2000);
|
||||
await waitFor(element(by.id(`rooms-list-view-item-${ room }`))).toExist().withTimeout(60000);
|
||||
await element(by.id(`rooms-list-view-item-${ room }`)).tap();
|
||||
await waitFor(element(by.id(`rooms-list-view-item-${ room }`))).toExist().withTimeout(60000);
|
||||
await element(by.id(`rooms-list-view-item-${ room }`)).tap();
|
||||
await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(2000);
|
||||
await sleep(1000);
|
||||
await element(by.id('room-view-header-actions')).tap();
|
||||
await waitFor(element(by.id('room-actions-view'))).toBeVisible().withTimeout(5000);
|
||||
}
|
||||
|
@ -52,13 +53,13 @@ describe('Room actions screen', () => {
|
|||
await expect(element(by.id('room-actions-info'))).toBeVisible();
|
||||
});
|
||||
|
||||
it('should have voice', async() => {
|
||||
await expect(element(by.id('room-actions-voice'))).toBeVisible();
|
||||
});
|
||||
// it('should have voice', async() => {
|
||||
// await expect(element(by.id('room-actions-voice'))).toBeVisible();
|
||||
// });
|
||||
|
||||
it('should have video', async() => {
|
||||
await expect(element(by.id('room-actions-video'))).toBeVisible();
|
||||
});
|
||||
// it('should have video', async() => {
|
||||
// await expect(element(by.id('room-actions-video'))).toBeVisible();
|
||||
// });
|
||||
|
||||
it('should have files', async() => {
|
||||
await expect(element(by.id('room-actions-files'))).toBeVisible();
|
||||
|
@ -77,22 +78,22 @@ describe('Room actions screen', () => {
|
|||
});
|
||||
|
||||
it('should have share', async() => {
|
||||
await waitFor(element(by.id('room-actions-share'))).toBeVisible().whileElement(by.id('room-actions-list')).scroll(scrollDown, 'down');
|
||||
await waitFor(element(by.id('room-actions-share'))).toBeVisible();
|
||||
await expect(element(by.id('room-actions-share'))).toBeVisible();
|
||||
});
|
||||
|
||||
it('should have pinned', async() => {
|
||||
await waitFor(element(by.id('room-actions-pinned'))).toBeVisible().whileElement(by.id('room-actions-list')).scroll(scrollDown, 'down');
|
||||
await waitFor(element(by.id('room-actions-pinned'))).toBeVisible();
|
||||
await expect(element(by.id('room-actions-pinned'))).toBeVisible();
|
||||
});
|
||||
|
||||
it('should have notifications', async() => {
|
||||
await waitFor(element(by.id('room-actions-notifications'))).toBeVisible().whileElement(by.id('room-actions-list')).scroll(scrollDown, 'down');
|
||||
await waitFor(element(by.id('room-actions-notifications'))).toBeVisible();
|
||||
await expect(element(by.id('room-actions-notifications'))).toBeVisible();
|
||||
});
|
||||
|
||||
it('should have block user', async() => {
|
||||
await waitFor(element(by.id('room-actions-block-user'))).toBeVisible().whileElement(by.id('room-actions-list')).scroll(scrollDown, 'down');
|
||||
await waitFor(element(by.id('room-actions-block-user'))).toBeVisible();
|
||||
await expect(element(by.id('room-actions-block-user'))).toBeVisible();
|
||||
});
|
||||
|
||||
|
@ -114,13 +115,13 @@ describe('Room actions screen', () => {
|
|||
await expect(element(by.id('room-actions-info'))).toBeVisible();
|
||||
});
|
||||
|
||||
it('should have voice', async() => {
|
||||
await expect(element(by.id('room-actions-voice'))).toBeVisible();
|
||||
});
|
||||
// it('should have voice', async() => {
|
||||
// await expect(element(by.id('room-actions-voice'))).toBeVisible();
|
||||
// });
|
||||
|
||||
it('should have video', async() => {
|
||||
await expect(element(by.id('room-actions-video'))).toBeVisible();
|
||||
});
|
||||
// it('should have video', async() => {
|
||||
// await expect(element(by.id('room-actions-video'))).toBeVisible();
|
||||
// });
|
||||
|
||||
it('should have members', async() => {
|
||||
await expect(element(by.id('room-actions-members'))).toBeVisible();
|
||||
|
@ -147,36 +148,32 @@ describe('Room actions screen', () => {
|
|||
});
|
||||
|
||||
it('should have share', async() => {
|
||||
await waitFor(element(by.id('room-actions-share'))).toBeVisible().whileElement(by.id('room-actions-list')).scroll(scrollDown, 'down');
|
||||
await waitFor(element(by.id('room-actions-share'))).toBeVisible();
|
||||
await expect(element(by.id('room-actions-share'))).toBeVisible();
|
||||
});
|
||||
|
||||
it('should have pinned', async() => {
|
||||
await waitFor(element(by.id('room-actions-pinned'))).toBeVisible().whileElement(by.id('room-actions-list')).scroll(scrollDown, 'down');
|
||||
await waitFor(element(by.id('room-actions-pinned'))).toBeVisible();
|
||||
await expect(element(by.id('room-actions-pinned'))).toBeVisible();
|
||||
});
|
||||
|
||||
it('should have notifications', async() => {
|
||||
await waitFor(element(by.id('room-actions-notifications'))).toBeVisible().whileElement(by.id('room-actions-list')).scroll(scrollDown, 'down');
|
||||
await waitFor(element(by.id('room-actions-notifications'))).toBeVisible();
|
||||
await expect(element(by.id('room-actions-notifications'))).toBeVisible();
|
||||
});
|
||||
|
||||
it('should have leave channel', async() => {
|
||||
await waitFor(element(by.id('room-actions-leave-channel'))).toBeVisible().whileElement(by.id('room-actions-list')).scroll(scrollDown, 'down');
|
||||
await waitFor(element(by.id('room-actions-leave-channel'))).toBeVisible();
|
||||
await expect(element(by.id('room-actions-leave-channel'))).toBeVisible();
|
||||
});
|
||||
});
|
||||
|
||||
afterEach(async() => {
|
||||
takeScreenshot();
|
||||
});
|
||||
});
|
||||
|
||||
describe('Usage', async() => {
|
||||
describe('TDB', async() => {
|
||||
// TODO: test into a jitsi call
|
||||
// it('should NOT navigate to voice call', async() => {
|
||||
// await waitFor(element(by.id('room-actions-voice'))).toBeVisible().whileElement(by.id('room-actions-list')).scroll(scrollDown, 'up');
|
||||
// await waitFor(element(by.id('room-actions-voice'))).toBeVisible();
|
||||
// await element(by.id('room-actions-voice')).tap();
|
||||
// await waitFor(element(by.id('room-actions-view'))).toBeVisible().withTimeout(2000);
|
||||
// await expect(element(by.id('room-actions-view'))).toBeVisible();
|
||||
|
@ -191,15 +188,11 @@ describe('Room actions screen', () => {
|
|||
|
||||
// TODO: test share room link
|
||||
// it('should NOT navigate to share room', async() => {
|
||||
// await waitFor(element(by.id('room-actions-share'))).toBeVisible().whileElement(by.id('room-actions-list')).scroll(scrollDown, 'down');
|
||||
// await waitFor(element(by.id('room-actions-share'))).toBeVisible();
|
||||
// await element(by.id('room-actions-share')).tap();
|
||||
// await waitFor(element(by.id('room-actions-view'))).toBeVisible().withTimeout(2000);
|
||||
// await expect(element(by.id('room-actions-view'))).toBeVisible();
|
||||
// });
|
||||
|
||||
after(async() => {
|
||||
takeScreenshot();
|
||||
});
|
||||
});
|
||||
|
||||
describe('Common', async() => {
|
||||
|
@ -215,29 +208,31 @@ describe('Room actions screen', () => {
|
|||
it('should show starred message and unstar it', async() => {
|
||||
await element(by.id('room-actions-starred')).tap();
|
||||
await waitFor(element(by.id('starred-messages-view'))).toExist().withTimeout(2000);
|
||||
await waitFor(element(by.text(`${ data.random }message`).withAncestor(by.id('starred-messages-view')))).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.text(`${ data.random }message`).withAncestor(by.id('starred-messages-view')))).toBeVisible();
|
||||
await element(by.text(`${ data.random }message`).withAncestor(by.id('starred-messages-view'))).longPress();
|
||||
await sleep(1000);
|
||||
await waitFor(element(by.label(`${ data.random }message`)).atIndex(0)).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.label(`${ data.random }message`)).atIndex(0)).toBeVisible();
|
||||
await element(by.label(`${ data.random }message`)).atIndex(0).longPress();
|
||||
await waitFor(element(by.text('Unstar'))).toBeVisible().withTimeout(2000);
|
||||
await expect(element(by.text('Unstar'))).toBeVisible();
|
||||
await element(by.text('Unstar')).tap();
|
||||
await waitFor(element(by.text(`${ data.random }message`).withAncestor(by.id('starred-messages-view')))).toBeNotVisible().withTimeout(60000);
|
||||
await expect(element(by.text(`${ data.random }message`).withAncestor(by.id('starred-messages-view')))).toBeNotVisible();
|
||||
await waitFor(element(by.label(`${ data.random }message`))).toBeNotVisible().withTimeout(60000);
|
||||
await expect(element(by.label(`${ data.random }message`))).toBeNotVisible();
|
||||
await backToActions();
|
||||
});
|
||||
|
||||
it('should show pinned message and unpin it', async() => {
|
||||
await waitFor(element(by.id('room-actions-pinned'))).toBeVisible().whileElement(by.id('room-actions-list')).scroll(scrollDown, 'down');
|
||||
await waitFor(element(by.id('room-actions-pinned'))).toBeVisible();
|
||||
await element(by.id('room-actions-pinned')).tap();
|
||||
await waitFor(element(by.id('pinned-messages-view'))).toExist().withTimeout(2000);
|
||||
await waitFor(element(by.text(`${ data.random }edited (edited)`).withAncestor(by.id('pinned-messages-view'))).atIndex(0)).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.text(`${ data.random }edited (edited)`).withAncestor(by.id('pinned-messages-view')))).toBeVisible();
|
||||
await element(by.text(`${ data.random }edited (edited)`).withAncestor(by.id('pinned-messages-view'))).longPress();
|
||||
await sleep(1000);
|
||||
await waitFor(element(by.label(`${ data.random }edited (edited)`)).atIndex(0)).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.label(`${ data.random }edited (edited)`)).atIndex(0)).toBeVisible();
|
||||
await element(by.label(`${ data.random }edited (edited)`)).atIndex(0).longPress();
|
||||
await waitFor(element(by.text('Unpin'))).toBeVisible().withTimeout(2000);
|
||||
await expect(element(by.text('Unpin'))).toBeVisible();
|
||||
await element(by.text('Unpin')).tap();
|
||||
await waitFor(element(by.text(`${ data.random }edited (edited)`).withAncestor(by.id('pinned-messages-view'))).atIndex(0)).toBeNotVisible().withTimeout(60000);
|
||||
await expect(element(by.text(`${ data.random }edited (edited)`).withAncestor(by.id('pinned-messages-view')))).toBeNotVisible();
|
||||
await waitFor(element(by.label(`${ data.random }edited (edited)`)).atIndex(0)).toBeNotVisible().withTimeout(60000);
|
||||
await expect(element(by.label(`${ data.random }edited (edited)`))).toBeNotVisible();
|
||||
await backToActions();
|
||||
});
|
||||
|
||||
|
@ -246,23 +241,18 @@ describe('Room actions screen', () => {
|
|||
await waitFor(element(by.id('search-messages-view'))).toExist().withTimeout(2000);
|
||||
await expect(element(by.id('search-message-view-input'))).toBeVisible();
|
||||
await element(by.id('search-message-view-input')).replaceText(`/${ data.random }message/`);
|
||||
await waitFor(element(by.text(`${ data.random }message`).withAncestor(by.id('search-messages-view'))).atIndex(0)).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.text(`${ data.random }message`).withAncestor(by.id('search-messages-view'))).atIndex(0)).toBeVisible();
|
||||
await element(by.traits(['button'])).atIndex(0).tap();
|
||||
await waitFor(element(by.label(`${ data.random }message`)).atIndex(0)).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.label(`${ data.random }message`)).atIndex(0)).toBeVisible();
|
||||
await backToActions();
|
||||
});
|
||||
|
||||
afterEach(async() => {
|
||||
takeScreenshot();
|
||||
});
|
||||
});
|
||||
|
||||
describe('Notification', async() => {
|
||||
it('should navigate to notification preference view', async() => {
|
||||
await waitFor(element(by.id('room-actions-notifications'))).toBeVisible().whileElement(by.id('room-actions-list')).scroll(scrollDown, 'down');
|
||||
await waitFor(element(by.id('room-actions-notifications'))).toBeVisible();
|
||||
await expect(element(by.id('room-actions-notifications'))).toBeVisible();
|
||||
await element(by.id('room-actions-notifications')).tap();
|
||||
await waitFor(element(by.text('notification-preference-view'))).toBeVisible().withTimeout(2000);
|
||||
await waitFor(element(by.id('notification-preference-view'))).toBeVisible().withTimeout(2000);
|
||||
await expect(element(by.id('notification-preference-view'))).toBeVisible();
|
||||
});
|
||||
|
||||
|
@ -279,34 +269,32 @@ describe('Room actions screen', () => {
|
|||
});
|
||||
|
||||
it('should have push notification option', async() => {
|
||||
await waitFor(element(by.id('notification-preference-view-push-notification'))).toBeVisible().whileElement(by.id('notification-preference-view-list')).scroll(scrollDown, 'down');
|
||||
await waitFor(element(by.id('notification-preference-view-push-notification'))).toBeVisible();
|
||||
await expect(element(by.id('notification-preference-view-push-notification'))).toBeVisible();
|
||||
});
|
||||
|
||||
it('should have notification audio option', async() => {
|
||||
await waitFor(element(by.id('notification-preference-view-audio'))).toBeVisible().whileElement(by.id('notification-preference-view-list')).scroll(scrollDown, 'down');
|
||||
await waitFor(element(by.id('notification-preference-view-audio'))).toBeVisible();
|
||||
await expect(element(by.id('notification-preference-view-audio'))).toBeVisible();
|
||||
});
|
||||
|
||||
it('should have notification sound option', async() => {
|
||||
await waitFor(element(by.id('notification-preference-view-sound'))).toBeVisible().whileElement(by.id('notification-preference-view-list')).scroll(scrollDown, 'down');
|
||||
// Ugly hack to scroll on detox
|
||||
await element(by.type('UIScrollView')).atIndex(1).scrollTo('bottom');
|
||||
await waitFor(element(by.id('notification-preference-view-sound'))).toBeVisible();
|
||||
await expect(element(by.id('notification-preference-view-sound'))).toBeVisible();
|
||||
});
|
||||
|
||||
it('should have notification duration option', async() => {
|
||||
await waitFor(element(by.id('notification-preference-view-notification-duration'))).toBeVisible().whileElement(by.id('notification-preference-view-list')).scroll(scrollDown, 'down');
|
||||
await waitFor(element(by.id('notification-preference-view-notification-duration'))).toBeVisible();
|
||||
await expect(element(by.id('notification-preference-view-notification-duration'))).toBeVisible();
|
||||
});
|
||||
|
||||
it('should have email alert option', async() => {
|
||||
await waitFor(element(by.id('notification-preference-view-email-alert'))).toBeVisible().whileElement(by.id('notification-preference-view-list')).scroll(scrollDown, 'down');
|
||||
await waitFor(element(by.id('notification-preference-view-email-alert'))).toBeVisible();
|
||||
await expect(element(by.id('notification-preference-view-email-alert'))).toBeVisible();
|
||||
});
|
||||
|
||||
afterEach(async() => {
|
||||
takeScreenshot();
|
||||
});
|
||||
|
||||
after(async() => {
|
||||
await backToActions();
|
||||
});
|
||||
|
@ -316,7 +304,7 @@ describe('Room actions screen', () => {
|
|||
// Currently, there's no way to add more owners to the room
|
||||
// So we test only for the 'You are the last owner...' message
|
||||
it('should tap on leave channel and raise alert', async() => {
|
||||
await waitFor(element(by.id('room-actions-leave-channel'))).toBeVisible().whileElement(by.id('room-actions-list')).scroll(scrollDown, 'down');
|
||||
await waitFor(element(by.id('room-actions-leave-channel'))).toBeVisible();
|
||||
await expect(element(by.id('room-actions-leave-channel'))).toBeVisible();
|
||||
await element(by.id('room-actions-leave-channel')).tap();
|
||||
await waitFor(element(by.text('Yes, leave it!'))).toBeVisible().withTimeout(2000);
|
||||
|
@ -324,34 +312,27 @@ describe('Room actions screen', () => {
|
|||
await element(by.text('Yes, leave it!')).tap();
|
||||
await waitFor(element(by.text('You are the last owner. Please set new owner before leaving the room.'))).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.text('You are the last owner. Please set new owner before leaving the room.'))).toBeVisible();
|
||||
await takeScreenshot();
|
||||
await element(by.text('OK')).tap();
|
||||
await waitFor(element(by.id('room-actions-view'))).toBeVisible().withTimeout(2000);
|
||||
});
|
||||
|
||||
describe('Add User', async() => {
|
||||
it('should add user to the room', async() => {
|
||||
await waitFor(element(by.id('room-actions-add-user'))).toBeVisible().whileElement(by.id('room-actions-list')).scroll(scrollDown, 'up');
|
||||
await element(by.id('room-actions-add-user')).tap();
|
||||
await element(by.id('select-users-view-search')).tap();
|
||||
await element(by.id('select-users-view-search')).replaceText(data.alternateUser);
|
||||
await waitFor(element(by.id(`select-users-view-item-${ data.alternateUser }`))).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.id(`select-users-view-item-${ data.alternateUser }`))).toBeVisible();
|
||||
await element(by.id(`select-users-view-item-${ data.alternateUser }`)).tap();
|
||||
await waitFor(element(by.id(`selected-user-${ data.alternateUser }`))).toBeVisible().withTimeout(5000);
|
||||
await expect(element(by.id(`selected-user-${ data.alternateUser }`))).toBeVisible();
|
||||
await element(by.id('selected-users-view-submit')).tap();
|
||||
await waitFor(element(by.id('room-actions-view'))).toBeVisible().withTimeout(2000);
|
||||
await element(by.id('room-actions-members')).tap();
|
||||
await element(by.id('room-members-view-toggle-status')).tap();
|
||||
await waitFor(element(by.id(`room-members-view-item-${ data.alternateUser }`))).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.id(`room-members-view-item-${ data.alternateUser }`))).toBeVisible();
|
||||
await backToActions(1);
|
||||
});
|
||||
|
||||
after(async() => {
|
||||
takeScreenshot();
|
||||
});
|
||||
it('should add user to the room', async() => {
|
||||
await waitFor(element(by.id('room-actions-add-user'))).toBeVisible();
|
||||
await element(by.id('room-actions-add-user')).tap();
|
||||
await element(by.id('select-users-view-search')).tap();
|
||||
await element(by.id('select-users-view-search')).replaceText(data.alternateUser);
|
||||
await waitFor(element(by.id(`select-users-view-item-${ data.alternateUser }`))).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.id(`select-users-view-item-${ data.alternateUser }`))).toBeVisible();
|
||||
await element(by.id(`select-users-view-item-${ data.alternateUser }`)).tap();
|
||||
await waitFor(element(by.id(`selected-user-${ data.alternateUser }`))).toBeVisible().withTimeout(5000);
|
||||
await expect(element(by.id(`selected-user-${ data.alternateUser }`))).toBeVisible();
|
||||
await element(by.id('selected-users-view-submit')).tap();
|
||||
await waitFor(element(by.id('room-actions-view'))).toBeVisible().withTimeout(2000);
|
||||
await element(by.id('room-actions-members')).tap();
|
||||
await element(by.id('room-members-view-toggle-status')).tap();
|
||||
await waitFor(element(by.id(`room-members-view-item-${ data.alternateUser }`))).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.id(`room-members-view-item-${ data.alternateUser }`))).toBeVisible();
|
||||
await backToActions(1);
|
||||
});
|
||||
|
||||
describe('Room Members', async() => {
|
||||
|
@ -362,6 +343,7 @@ describe('Room actions screen', () => {
|
|||
});
|
||||
|
||||
it('should show all users', async() => {
|
||||
await sleep(1000);
|
||||
await element(by.id('room-members-view-toggle-status')).tap();
|
||||
await waitFor(element(by.id(`room-members-view-item-${ data.alternateUser }`))).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.id(`room-members-view-item-${ data.alternateUser }`))).toBeVisible();
|
||||
|
@ -379,39 +361,37 @@ describe('Room actions screen', () => {
|
|||
await expect(element(by.id(`room-members-view-item-${ data.alternateUser }`))).toBeVisible();
|
||||
});
|
||||
|
||||
it('should mute user', async() => {
|
||||
await element(by.id(`room-members-view-item-${ data.alternateUser }`)).longPress();
|
||||
await waitFor(element(by.text('Mute'))).toBeVisible().withTimeout(5000);
|
||||
await expect(element(by.text('Mute'))).toBeVisible();
|
||||
await element(by.text('Mute')).tap();
|
||||
await waitFor(element(by.text('User has been muted!'))).toBeVisible().withTimeout(10000);
|
||||
// await expect(element(by.text('User has been muted!'))).toBeVisible();
|
||||
await waitFor(element(by.text('User has been muted!'))).toBeNotVisible().withTimeout(10000);
|
||||
await expect(element(by.text('User has been muted!'))).toBeNotVisible();
|
||||
await element(by.id(`room-members-view-item-${ data.alternateUser }`)).longPress();
|
||||
await waitFor(element(by.text('Unmute'))).toBeVisible().withTimeout(2000);
|
||||
await expect(element(by.text('Unmute'))).toBeVisible();
|
||||
await element(by.text('Unmute')).tap();
|
||||
await waitFor(element(by.text('User has been unmuted!'))).toBeVisible().withTimeout(10000);
|
||||
// await expect(element(by.text('User has been unmuted!'))).toBeVisible();
|
||||
await waitFor(element(by.text('User has been unmuted!'))).toBeNotVisible().withTimeout(10000);
|
||||
await expect(element(by.text('User has been unmuted!'))).toBeNotVisible();
|
||||
});
|
||||
// FIXME: mute/unmute isn't working
|
||||
// it('should mute user', async() => {
|
||||
// await sleep(1000);
|
||||
// await element(by.id(`room-members-view-item-${ data.alternateUser }`)).longPress(1500);
|
||||
// await waitFor(element(by.text('Mute'))).toBeVisible().withTimeout(5000);
|
||||
// await expect(element(by.text('Mute'))).toBeVisible();
|
||||
// await element(by.text('Mute')).tap();
|
||||
// await waitFor(element(by.id('toast'))).toBeVisible().withTimeout(10000);
|
||||
// await expect(element(by.id('toast'))).toBeVisible();
|
||||
// await waitFor(element(by.id('toast'))).toBeNotVisible().withTimeout(10000);
|
||||
// await expect(element(by.id('toast'))).toBeNotVisible();
|
||||
// await element(by.id(`room-members-view-item-${ data.alternateUser }`)).longPress(1500);
|
||||
// await waitFor(element(by.text('Unmute'))).toBeVisible().withTimeout(2000);
|
||||
// await expect(element(by.text('Unmute'))).toBeVisible();
|
||||
// await element(by.text('Unmute')).tap();
|
||||
// await waitFor(element(by.id('toast'))).toBeVisible().withTimeout(10000);
|
||||
// await expect(element(by.id('toast'))).toBeVisible();
|
||||
// await waitFor(element(by.id('toast'))).toBeNotVisible().withTimeout(10000);
|
||||
// await expect(element(by.id('toast'))).toBeNotVisible();
|
||||
// });
|
||||
|
||||
it('should navigate to direct room', async() => {
|
||||
await waitFor(element(by.id(`room-members-view-item-${ data.alternateUser }`))).toExist().withTimeout(5000);
|
||||
await element(by.id(`room-members-view-item-${ data.alternateUser }`)).tap();
|
||||
await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.id('room-view'))).toBeVisible();
|
||||
await waitFor(element(by.text(data.alternateUser))).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.text(data.alternateUser))).toBeVisible();
|
||||
await waitFor(element(by.id(`room-view-title-${ data.alternateUser }`))).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.id(`room-view-title-${ data.alternateUser }`))).toBeVisible();
|
||||
await tapBack();
|
||||
await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(2000);
|
||||
});
|
||||
|
||||
afterEach(async() => {
|
||||
takeScreenshot();
|
||||
});
|
||||
});
|
||||
})
|
||||
|
||||
|
@ -421,17 +401,14 @@ describe('Room actions screen', () => {
|
|||
});
|
||||
|
||||
it('should block/unblock user', async() => {
|
||||
await waitFor(element(by.id('room-actions-block-user'))).toBeVisible().whileElement(by.id('room-actions-list')).scroll(scrollDown, 'down');
|
||||
await waitFor(element(by.id('room-actions-block-user'))).toBeVisible();
|
||||
await sleep(1000);
|
||||
await element(by.id('room-actions-block-user')).tap();
|
||||
await waitFor(element(by.text('Unblock user'))).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.text('Unblock user'))).toBeVisible();
|
||||
await waitFor(element(by.label('Unblock user'))).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.label('Unblock user'))).toBeVisible();
|
||||
await element(by.id('room-actions-block-user')).tap();
|
||||
await waitFor(element(by.text('Block user'))).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.text('Block user'))).toBeVisible();
|
||||
});
|
||||
|
||||
after(async() => {
|
||||
takeScreenshot();
|
||||
await waitFor(element(by.label('Block user'))).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.label('Block user'))).toBeVisible();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
const {
|
||||
device, expect, element, by, waitFor
|
||||
} = require('detox');
|
||||
const { takeScreenshot } = require('./helpers/screenshot');
|
||||
const data = require('./data');
|
||||
const { tapBack, sleep } = require('./helpers/app');
|
||||
|
||||
|
@ -13,21 +12,32 @@ async function navigateToRoomInfo(type) {
|
|||
room = `private${ data.random }`;
|
||||
}
|
||||
await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(10000);
|
||||
await element(by.id('rooms-list-view-search')).replaceText(room);
|
||||
await element(by.type('UIScrollView')).atIndex(1).scrollTo('top');
|
||||
await element(by.id('rooms-list-view-search')).typeText(room);
|
||||
await sleep(2000);
|
||||
await waitFor(element(by.id(`rooms-list-view-item-${ room }`))).toExist().withTimeout(60000);
|
||||
await waitFor(element(by.id(`rooms-list-view-item-${ room }`))).toExist().withTimeout(60000);
|
||||
await element(by.id(`rooms-list-view-item-${ room }`)).tap();
|
||||
await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(2000);
|
||||
await sleep(1000);
|
||||
await element(by.id('room-view-header-actions')).tap();
|
||||
await waitFor(element(by.id('room-actions-view'))).toBeVisible().withTimeout(5000);
|
||||
await sleep(1000);
|
||||
await element(by.id('room-actions-info')).tap();
|
||||
await waitFor(element(by.id('room-info-view'))).toBeVisible().withTimeout(2000);
|
||||
}
|
||||
|
||||
async function waitForToast() {
|
||||
// await waitFor(element(by.id('toast'))).toBeVisible().withTimeout(10000);
|
||||
// await expect(element(by.id('toast'))).toBeVisible();
|
||||
// await waitFor(element(by.id('toast'))).toBeNotVisible().withTimeout(10000);
|
||||
// await expect(element(by.id('toast'))).toBeNotVisible();
|
||||
await sleep(5000);
|
||||
}
|
||||
|
||||
describe('Room info screen', () => {
|
||||
describe('Direct', async() => {
|
||||
before(async() => {
|
||||
await device.reloadReactNative();
|
||||
await device.launchApp({ newInstance: true });
|
||||
await navigateToRoomInfo('d');
|
||||
});
|
||||
|
||||
|
@ -35,15 +45,11 @@ describe('Room info screen', () => {
|
|||
await expect(element(by.id('room-info-view'))).toBeVisible();
|
||||
await expect(element(by.id('room-info-view-name'))).toBeVisible();
|
||||
});
|
||||
|
||||
after(async() => {
|
||||
await takeScreenshot();
|
||||
});
|
||||
});
|
||||
|
||||
describe('Channel/Group', async() => {
|
||||
before(async() => {
|
||||
await device.reloadReactNative();
|
||||
await device.launchApp({ newInstance: true });
|
||||
await navigateToRoomInfo('c');
|
||||
});
|
||||
|
||||
|
@ -57,28 +63,28 @@ describe('Room info screen', () => {
|
|||
});
|
||||
|
||||
it('should have description', async() => {
|
||||
await expect(element(by.id('room-info-view-description'))).toBeVisible();
|
||||
// await expect(element(by.id('room-info-view-description'))).toBeVisible();
|
||||
await expect(element(by.label('description'))).toBeVisible();
|
||||
});
|
||||
|
||||
it('should have topic', async() => {
|
||||
await expect(element(by.id('room-info-view-topic'))).toBeVisible();
|
||||
// await expect(element(by.id('room-info-view-topic'))).toBeVisible();
|
||||
await expect(element(by.label('topic'))).toBeVisible();
|
||||
});
|
||||
|
||||
it('should have announcement', async() => {
|
||||
await expect(element(by.id('room-info-view-announcement'))).toBeVisible();
|
||||
// await expect(element(by.id('room-info-view-announcement'))).toBeVisible();
|
||||
await expect(element(by.label('announcement'))).toBeVisible();
|
||||
});
|
||||
|
||||
it('should have edit button', async() => {
|
||||
await expect(element(by.id('room-info-view-edit-button'))).toBeVisible();
|
||||
});
|
||||
|
||||
after(async() => {
|
||||
takeScreenshot();
|
||||
});
|
||||
});
|
||||
|
||||
describe('Render Edit', async() => {
|
||||
before(async() => {
|
||||
await sleep(1000);
|
||||
await waitFor(element(by.id('room-info-view-edit-button'))).toBeVisible().withTimeout(10000);
|
||||
await element(by.id('room-info-view-edit-button')).tap();
|
||||
await waitFor(element(by.id('room-info-edit-view'))).toBeVisible().withTimeout(2000);
|
||||
|
@ -109,7 +115,8 @@ describe('Room info screen', () => {
|
|||
});
|
||||
|
||||
it('should have type switch', async() => {
|
||||
await element(by.id('room-info-edit-view-list')).swipe('up');
|
||||
// Ugly hack to scroll on detox
|
||||
await element(by.type('UIScrollView')).atIndex(1).swipe('up');
|
||||
await expect(element(by.id('room-info-edit-view-t'))).toBeVisible();
|
||||
});
|
||||
|
||||
|
@ -134,48 +141,44 @@ describe('Room info screen', () => {
|
|||
});
|
||||
|
||||
after(async() => {
|
||||
await takeScreenshot();
|
||||
await element(by.id('room-info-edit-view-list')).swipe('down');
|
||||
// Ugly hack to scroll on detox
|
||||
await element(by.type('UIScrollView')).atIndex(1).swipe('down');
|
||||
});
|
||||
});
|
||||
|
||||
describe('Usage', async() => {
|
||||
const room = `private${ data.random }`;
|
||||
// it('should enter "invalid name" and get error', async() => {
|
||||
// await element(by.id('room-info-edit-view-list')).swipe('down');
|
||||
// await element(by.type('UIScrollView')).atIndex(1).swipe('down');
|
||||
// await element(by.id('room-info-edit-view-name')).replaceText('invalid name');
|
||||
// await element(by.id('room-info-edit-view-list')).swipe('up');
|
||||
// await element(by.type('UIScrollView')).atIndex(1).swipe('up');
|
||||
// await element(by.id('room-info-edit-view-submit')).tap();
|
||||
// await waitFor(element(by.text('There was an error while saving settings!'))).toBeVisible().withTimeout(60000);
|
||||
// await expect(element(by.text('There was an error while saving settings!'))).toBeVisible();
|
||||
// await element(by.text('OK')).tap();
|
||||
// await waitFor(element(by.text('There was an error while saving settings!'))).toBeNotVisible().withTimeout(10000);
|
||||
// await element(by.id('room-info-edit-view-list')).swipe('down');
|
||||
// await element(by.type('UIScrollView')).atIndex(1).swipe('down');
|
||||
// });
|
||||
|
||||
it('should change room name', async() => {
|
||||
await element(by.id('room-info-edit-view-name')).replaceText(`${ room }new`);
|
||||
await element(by.id('room-info-edit-view-list')).swipe('up');
|
||||
await element(by.type('UIScrollView')).atIndex(1).swipe('up');
|
||||
await element(by.id('room-info-edit-view-submit')).tap();
|
||||
await waitFor(element(by.text('Settings succesfully changed!'))).toBeVisible().withTimeout(10000);
|
||||
// await expect(element(by.text('Settings succesfully changed!'))).toBeVisible();
|
||||
await waitFor(element(by.text('Settings succesfully changed!'))).toBeNotVisible().withTimeout(10000);
|
||||
await expect(element(by.text('Settings succesfully changed!'))).toBeNotVisible();
|
||||
await sleep(5000);
|
||||
await tapBack();
|
||||
await waitFor(element(by.id('room-info-view'))).toBeVisible().withTimeout(2000);
|
||||
await waitFor(element(by.id('room-info-view-name'))).toHaveText(`${ room }new`).withTimeout(60000);
|
||||
await expect(element(by.id('room-info-view-name'))).toHaveText(`${ room }new`);
|
||||
await sleep(1000);
|
||||
await expect(element(by.id('room-info-view-name'))).toHaveLabel(`${ room }new`);
|
||||
// change name to original
|
||||
await element(by.id('room-info-view-edit-button')).tap();
|
||||
await sleep(1000);
|
||||
await waitFor(element(by.id('room-info-edit-view'))).toBeVisible().withTimeout(2000);
|
||||
await element(by.id('room-info-edit-view-name')).replaceText(`${ room }`);
|
||||
await element(by.id('room-info-edit-view-list')).swipe('up');
|
||||
await element(by.type('UIScrollView')).atIndex(1).swipe('up');
|
||||
await sleep(1000);
|
||||
await element(by.id('room-info-edit-view-submit')).tap();
|
||||
await waitFor(element(by.text('Settings succesfully changed!'))).toBeVisible().withTimeout(10000);
|
||||
// await expect(element(by.text('Settings succesfully changed!'))).toBeVisible();
|
||||
await waitFor(element(by.text('Settings succesfully changed!'))).toBeNotVisible().withTimeout(10000);
|
||||
await expect(element(by.text('Settings succesfully changed!'))).toBeNotVisible();
|
||||
await element(by.id('room-info-edit-view-list')).swipe('down');
|
||||
await waitForToast();
|
||||
await element(by.type('UIScrollView')).atIndex(1).swipe('down');
|
||||
});
|
||||
|
||||
it('should reset form', async() => {
|
||||
|
@ -184,7 +187,7 @@ describe('Room info screen', () => {
|
|||
await element(by.id('room-info-edit-view-topic')).replaceText('abc');
|
||||
await element(by.id('room-info-edit-view-announcement')).replaceText('abc');
|
||||
await element(by.id('room-info-edit-view-password')).replaceText('abc');
|
||||
await element(by.id('room-info-edit-view-list')).swipe('up');
|
||||
await element(by.type('UIScrollView')).atIndex(1).swipe('up');
|
||||
await element(by.id('room-info-edit-view-t')).tap();
|
||||
await element(by.id('room-info-edit-view-ro')).tap();
|
||||
await element(by.id('room-info-edit-view-react-when-ro')).tap();
|
||||
|
@ -198,105 +201,98 @@ describe('Room info screen', () => {
|
|||
await expect(element(by.id('room-info-edit-view-t'))).toHaveValue('1');
|
||||
await expect(element(by.id('room-info-edit-view-ro'))).toHaveValue('0');
|
||||
await expect(element(by.id('room-info-edit-view-react-when-ro'))).toBeNotVisible();
|
||||
await element(by.id('room-info-edit-view-list')).swipe('down');
|
||||
await element(by.type('UIScrollView')).atIndex(1).swipe('down');
|
||||
});
|
||||
|
||||
it('should change room description', async() => {
|
||||
await sleep(1000);
|
||||
await element(by.id('room-info-edit-view-description')).replaceText('new description');
|
||||
await element(by.id('room-info-edit-view-list')).swipe('up');
|
||||
await element(by.type('UIScrollView')).atIndex(1).swipe('up');
|
||||
await element(by.id('room-info-edit-view-submit')).tap();
|
||||
await waitFor(element(by.text('Settings succesfully changed!'))).toBeVisible().withTimeout(10000);
|
||||
// await expect(element(by.text('Settings succesfully changed!'))).toBeVisible();
|
||||
await waitFor(element(by.text('Settings succesfully changed!'))).toBeNotVisible().withTimeout(10000);
|
||||
await expect(element(by.text('Settings succesfully changed!'))).toBeNotVisible();
|
||||
await waitForToast();
|
||||
await tapBack();
|
||||
await waitFor(element(by.id('room-info-view'))).toBeVisible().withTimeout(2000);
|
||||
await waitFor(element(by.id('room-info-view-description'))).toHaveText('new description').withTimeout(60000);
|
||||
await expect(element(by.id('room-info-view-description'))).toHaveText('new description');
|
||||
await sleep(1000);
|
||||
// await expect(element(by.id('room-info-view-description'))).toHaveLabel('new description');
|
||||
await expect(element(by.label('new description'))).toBeVisible();
|
||||
await waitFor(element(by.id('room-info-view-edit-button'))).toBeVisible().withTimeout(10000);
|
||||
await element(by.id('room-info-view-edit-button')).tap();
|
||||
await waitFor(element(by.id('room-info-edit-view'))).toBeVisible().withTimeout(2000);
|
||||
});
|
||||
|
||||
it('should change room topic', async() => {
|
||||
await sleep(1000);
|
||||
await element(by.id('room-info-edit-view-topic')).replaceText('new topic');
|
||||
await element(by.id('room-info-edit-view-list')).swipe('up');
|
||||
await element(by.type('UIScrollView')).atIndex(1).swipe('up');
|
||||
await element(by.id('room-info-edit-view-submit')).tap();
|
||||
await waitFor(element(by.text('Settings succesfully changed!'))).toBeVisible().withTimeout(10000);
|
||||
// await expect(element(by.text('Settings succesfully changed!'))).toBeVisible();
|
||||
await waitFor(element(by.text('Settings succesfully changed!'))).toBeNotVisible().withTimeout(10000);
|
||||
await expect(element(by.text('Settings succesfully changed!'))).toBeNotVisible();
|
||||
await waitForToast();
|
||||
await tapBack();
|
||||
await waitFor(element(by.id('room-info-view'))).toBeVisible().withTimeout(2000);
|
||||
await waitFor(element(by.id('room-info-view-topic'))).toHaveText('new topic').withTimeout(60000);
|
||||
await expect(element(by.id('room-info-view-topic'))).toHaveText('new topic');
|
||||
await sleep(1000);
|
||||
// await expect(element(by.id('room-info-view-topic'))).toHaveLabel('new topic');
|
||||
await expect(element(by.label('new topic'))).toBeVisible();
|
||||
await waitFor(element(by.id('room-info-view-edit-button'))).toBeVisible().withTimeout(10000);
|
||||
await element(by.id('room-info-view-edit-button')).tap();
|
||||
await waitFor(element(by.id('room-info-edit-view'))).toBeVisible().withTimeout(2000);
|
||||
});
|
||||
|
||||
it('should change room announcement', async() => {
|
||||
await sleep(1000);
|
||||
await element(by.id('room-info-edit-view-announcement')).replaceText('new announcement');
|
||||
await element(by.id('room-info-edit-view-list')).swipe('up');
|
||||
await element(by.type('UIScrollView')).atIndex(1).swipe('up');
|
||||
await element(by.id('room-info-edit-view-submit')).tap();
|
||||
await waitFor(element(by.text('Settings succesfully changed!'))).toBeVisible().withTimeout(10000);
|
||||
// await expect(element(by.text('Settings succesfully changed!'))).toBeVisible();
|
||||
await waitFor(element(by.text('Settings succesfully changed!'))).toBeNotVisible().withTimeout(10000);
|
||||
await expect(element(by.text('Settings succesfully changed!'))).toBeNotVisible();
|
||||
await waitForToast();
|
||||
await tapBack();
|
||||
await waitFor(element(by.id('room-info-view'))).toBeVisible().withTimeout(2000);
|
||||
await waitFor(element(by.id('room-info-view-announcement'))).toHaveText('new announcement').withTimeout(60000);
|
||||
await expect(element(by.id('room-info-view-announcement'))).toHaveText('new announcement');
|
||||
await sleep(1000);
|
||||
// await expect(element(by.id('room-info-view-announcement'))).toHaveLabel('new announcement');
|
||||
await expect(element(by.label('new announcement'))).toBeVisible();
|
||||
await waitFor(element(by.id('room-info-view-edit-button'))).toBeVisible().withTimeout(10000);
|
||||
await element(by.id('room-info-view-edit-button')).tap();
|
||||
await waitFor(element(by.id('room-info-edit-view'))).toBeVisible().withTimeout(2000);
|
||||
});
|
||||
|
||||
it('should change room password', async() => {
|
||||
await element(by.id('room-info-edit-view-list')).swipe('up');
|
||||
await sleep(1000);
|
||||
await element(by.type('UIScrollView')).atIndex(1).swipe('up');
|
||||
await element(by.id('room-info-edit-view-password')).replaceText('password');
|
||||
await element(by.id('room-info-edit-view-submit')).tap();
|
||||
await waitFor(element(by.text('Settings succesfully changed!'))).toBeVisible().withTimeout(10000);
|
||||
// await expect(element(by.text('Settings succesfully changed!'))).toBeVisible();
|
||||
await waitFor(element(by.text('Settings succesfully changed!'))).toBeNotVisible().withTimeout(10000);
|
||||
await expect(element(by.text('Settings succesfully changed!'))).toBeNotVisible();
|
||||
await waitForToast();
|
||||
});
|
||||
|
||||
it('should change room type', async() => {
|
||||
await sleep(1000);
|
||||
await element(by.type('UIScrollView')).atIndex(1).swipe('up');
|
||||
await element(by.id('room-info-edit-view-t')).tap();
|
||||
await element(by.id('room-info-edit-view-submit')).tap();
|
||||
await waitFor(element(by.text('Settings succesfully changed!'))).toBeVisible().withTimeout(10000);
|
||||
// await expect(element(by.text('Settings succesfully changed!'))).toBeVisible();
|
||||
await waitFor(element(by.text('Settings succesfully changed!'))).toBeNotVisible().withTimeout(10000);
|
||||
await expect(element(by.text('Settings succesfully changed!'))).toBeNotVisible();
|
||||
await waitForToast();
|
||||
await element(by.id('room-info-edit-view-t')).tap();
|
||||
await element(by.id('room-info-edit-view-submit')).tap();
|
||||
await waitFor(element(by.text('Settings succesfully changed!'))).toBeVisible().withTimeout(10000);
|
||||
// await expect(element(by.text('Settings succesfully changed!'))).toBeVisible();
|
||||
await waitFor(element(by.text('Settings succesfully changed!'))).toBeNotVisible().withTimeout(10000);
|
||||
await expect(element(by.text('Settings succesfully changed!'))).toBeNotVisible();
|
||||
await waitForToast();
|
||||
});
|
||||
|
||||
it('should change room read only and allow reactions', async() => {
|
||||
await element(by.id('room-info-edit-view-ro')).tap();
|
||||
await waitFor(element(by.id('room-info-edit-view-react-when-ro'))).toBeVisible().withTimeout(2000);
|
||||
await expect(element(by.id('room-info-edit-view-react-when-ro'))).toBeVisible();
|
||||
await element(by.id('room-info-edit-view-react-when-ro')).tap();
|
||||
await element(by.id('room-info-edit-view-submit')).tap();
|
||||
await waitFor(element(by.text('Settings succesfully changed!'))).toBeVisible().withTimeout(10000);
|
||||
// await expect(element(by.text('Settings succesfully changed!'))).toBeVisible();
|
||||
await waitFor(element(by.text('Settings succesfully changed!'))).toBeNotVisible().withTimeout(10000);
|
||||
await expect(element(by.text('Settings succesfully changed!'))).toBeNotVisible();
|
||||
// TODO: test if it's possible to react
|
||||
});
|
||||
// it('should change room read only and allow reactions', async() => {
|
||||
// await sleep(1000);
|
||||
// await element(by.type('UIScrollView')).atIndex(1).swipe('up');
|
||||
// await element(by.id('room-info-edit-view-ro')).tap();
|
||||
// await waitFor(element(by.id('room-info-edit-view-react-when-ro'))).toBeVisible().withTimeout(2000);
|
||||
// await expect(element(by.id('room-info-edit-view-react-when-ro'))).toBeVisible();
|
||||
// await element(by.id('room-info-edit-view-react-when-ro')).tap();
|
||||
// await element(by.id('room-info-edit-view-submit')).tap();
|
||||
// await waitForToast();
|
||||
// // TODO: test if it's possible to react
|
||||
// });
|
||||
|
||||
it('should archive room', async() => {
|
||||
await sleep(1000);
|
||||
await element(by.type('UIScrollView')).atIndex(1).swipe('up');
|
||||
await element(by.id('room-info-edit-view-archive')).tap();
|
||||
await waitFor(element(by.text('Yes, archive it!'))).toBeVisible().withTimeout(5000);
|
||||
await expect(element(by.text('Yes, archive it!'))).toBeVisible();
|
||||
await element(by.text('Yes, archive it!')).tap();
|
||||
await waitFor(element(by.text('UNARCHIVE'))).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.text('UNARCHIVE'))).toBeVisible();
|
||||
await waitFor(element(by.id('room-info-edit-view-unarchive'))).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.id('room-info-edit-view-unarchive'))).toBeVisible();
|
||||
await expect(element(by.id('room-info-edit-view-archive'))).toBeNotVisible();
|
||||
// TODO: needs permission to unarchive
|
||||
// await element(by.id('room-info-edit-view-archive')).tap();
|
||||
// await waitFor(element(by.text('Yes, unarchive it!'))).toBeVisible().withTimeout(5000);
|
||||
|
@ -307,21 +303,18 @@ describe('Room info screen', () => {
|
|||
});
|
||||
|
||||
it('should delete room', async() => {
|
||||
await element(by.id('room-info-edit-view-list')).swipe('up');
|
||||
await sleep(1000);
|
||||
await element(by.type('UIScrollView')).atIndex(1).swipe('up');
|
||||
await element(by.id('room-info-edit-view-delete')).tap();
|
||||
await waitFor(element(by.text('Yes, delete it!'))).toBeVisible().withTimeout(5000);
|
||||
await expect(element(by.text('Yes, delete it!'))).toBeVisible();
|
||||
await element(by.text('Yes, delete it!')).tap();
|
||||
await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(10000);
|
||||
await element(by.id('rooms-list-view-search')).replaceText('');
|
||||
// await element(by.id('rooms-list-view-search')).typeText('');
|
||||
await sleep(2000);
|
||||
await waitFor(element(by.id(`rooms-list-view-item-${ room }`))).toBeNotVisible().withTimeout(60000);
|
||||
await expect(element(by.id(`rooms-list-view-item-${ room }`))).toBeNotVisible();
|
||||
});
|
||||
|
||||
afterEach(async() => {
|
||||
takeScreenshot();
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
@ -1,41 +1,29 @@
|
|||
const {
|
||||
device, expect, element, by, waitFor
|
||||
} = require('detox');
|
||||
const { takeScreenshot } = require('./helpers/screenshot');
|
||||
const data = require('./data');
|
||||
|
||||
// try open 3 times because it not open if is
|
||||
// connecting || updating
|
||||
async function openServerDropdown() {
|
||||
let i = 0;
|
||||
await element(by.id('rooms-list-header-server-dropdown-button')).tap();
|
||||
while(i < 3) {
|
||||
try {
|
||||
await expect(element(by.id('rooms-list-header-server-dropdown'))).toExist();
|
||||
break;
|
||||
} catch (e) {
|
||||
i += 1;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const { sleep, logout } = require('./helpers/app');
|
||||
|
||||
describe('Change server', () => {
|
||||
before(async() => {
|
||||
await device.reloadReactNative();
|
||||
await device.launchApp({ newInstance: true });
|
||||
await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(10000);
|
||||
});
|
||||
|
||||
it('should add server and create new user', async() => {
|
||||
// Navigate to add server
|
||||
await openServerDropdown();
|
||||
await waitFor(element(by.id('rooms-list-header-server-dropdown'))).toBeVisible().withTimeout(2000);
|
||||
await sleep(5000);
|
||||
await element(by.id('rooms-list-header-server-dropdown-button')).tap();
|
||||
await waitFor(element(by.id('rooms-list-header-server-dropdown'))).toBeVisible().withTimeout(5000);
|
||||
await expect(element(by.id('rooms-list-header-server-dropdown'))).toExist();
|
||||
await sleep(1000);
|
||||
await element(by.id('rooms-list-header-server-add')).tap();
|
||||
await waitFor(element(by.id('onboarding-view'))).toBeVisible().withTimeout(60000);
|
||||
await sleep(1000);
|
||||
await element(by.id('connect-server-button')).tap();
|
||||
// Add server
|
||||
await waitFor(element(by.id('new-server-view'))).toBeVisible().withTimeout(60000);
|
||||
await element(by.id('new-server-view-input')).replaceText(data.alternateServer);
|
||||
await sleep(1000);
|
||||
await element(by.id('new-server-view-button')).tap();
|
||||
// Navigate to register
|
||||
// await waitFor(element(by.id('welcome-view'))).toBeVisible().withTimeout(2000);
|
||||
|
@ -44,10 +32,12 @@ describe('Change server', () => {
|
|||
try {
|
||||
await waitFor(element(by.id('login-view'))).toBeVisible().withTimeout(2000);
|
||||
await expect(element(by.id('login-view'))).toBeVisible();
|
||||
await sleep(1000);
|
||||
await element(by.id('login-view-register')).tap();
|
||||
} catch (error) {
|
||||
await waitFor(element(by.id('welcome-view'))).toBeVisible().withTimeout(2000);
|
||||
await expect(element(by.id('welcome-view'))).toBeVisible();
|
||||
await sleep(1000);
|
||||
await element(by.id('welcome-view-register')).tap();
|
||||
}
|
||||
await waitFor(element(by.id('register-view'))).toBeVisible().withTimeout(2000);
|
||||
|
@ -57,6 +47,7 @@ describe('Change server', () => {
|
|||
await element(by.id('register-view-username')).replaceText(data.user);
|
||||
await element(by.id('register-view-email')).replaceText(data.email);
|
||||
await element(by.id('register-view-password')).replaceText(data.password);
|
||||
await sleep(1000);
|
||||
await element(by.id('register-view-submit')).tap();
|
||||
await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.id('rooms-list-view'))).toBeVisible();
|
||||
|
@ -67,8 +58,11 @@ describe('Change server', () => {
|
|||
});
|
||||
|
||||
it('should change server', async() => {
|
||||
await openServerDropdown();
|
||||
await waitFor(element(by.id('rooms-list-header-server-dropdown'))).toBeVisible().withTimeout(2000);
|
||||
await sleep(5000);
|
||||
await element(by.id('rooms-list-header-server-dropdown-button')).tap();
|
||||
await waitFor(element(by.id('rooms-list-header-server-dropdown'))).toBeVisible().withTimeout(5000);
|
||||
await expect(element(by.id('rooms-list-header-server-dropdown'))).toExist();
|
||||
await sleep(1000);
|
||||
await element(by.id(`rooms-list-header-server-${ data.server }`)).tap();
|
||||
await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(10000);
|
||||
// For a sanity test, to make sure roomslist is showing correct rooms
|
||||
|
@ -76,8 +70,4 @@ describe('Change server', () => {
|
|||
await waitFor(element(by.id(`rooms-list-view-item-public${ data.random }`))).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.id(`rooms-list-view-item-public${ data.random }`))).toBeVisible();
|
||||
});
|
||||
|
||||
afterEach(async() => {
|
||||
takeScreenshot();
|
||||
});
|
||||
});
|
||||
|
|
|
@ -3,13 +3,39 @@ const {
|
|||
} = require('detox');
|
||||
const OTP = require('otp.js');
|
||||
const GA = OTP.googleAuthenticator;
|
||||
const { takeScreenshot } = require('./helpers/screenshot');
|
||||
const { logout, navigateToLogin, login, tapBack, sleep } = require('./helpers/app');
|
||||
const { navigateToLogin, login, tapBack, sleep } = require('./helpers/app');
|
||||
const data = require('./data');
|
||||
|
||||
const logout = async() => {
|
||||
// previous tests added alternate server to the device
|
||||
// so logout will only remove this server data and select alternate server
|
||||
await element(by.id('rooms-list-view-sidebar')).tap();
|
||||
await waitFor(element(by.id('sidebar-view'))).toBeVisible().withTimeout(2000);
|
||||
await waitFor(element(by.id('sidebar-settings'))).toBeVisible().withTimeout(2000);
|
||||
await element(by.id('sidebar-settings')).tap();
|
||||
await waitFor(element(by.id('settings-view'))).toBeVisible().withTimeout(2000);
|
||||
await element(by.type('UIScrollView')).atIndex(1).scrollTo('bottom');
|
||||
await element(by.id('settings-logout')).tap();
|
||||
const logoutAlertMessage = 'You will be logged out of this application.';
|
||||
await waitFor(element(by.text(logoutAlertMessage)).atIndex(0)).toExist().withTimeout(10000);
|
||||
await expect(element(by.text(logoutAlertMessage)).atIndex(0)).toExist();
|
||||
await element(by.text('Logout')).tap();
|
||||
await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(2000);
|
||||
await sleep(5000);
|
||||
}
|
||||
|
||||
const localNavigateToLogin = async() => {
|
||||
await element(by.id('rooms-list-header-server-dropdown-button')).tap();
|
||||
await waitFor(element(by.id('rooms-list-header-server-dropdown'))).toBeVisible().withTimeout(5000);
|
||||
await expect(element(by.id('rooms-list-header-server-dropdown'))).toExist();
|
||||
await sleep(1000);
|
||||
await element(by.id('rooms-list-header-server-add')).tap();
|
||||
await navigateToLogin();
|
||||
}
|
||||
|
||||
describe('Broadcast room', () => {
|
||||
before(async() => {
|
||||
await device.reloadReactNative();
|
||||
await device.launchApp({ newInstance: true });
|
||||
});
|
||||
|
||||
it('should create broadcast room', async() => {
|
||||
|
@ -19,16 +45,20 @@ describe('Broadcast room', () => {
|
|||
await waitFor(element(by.id('select-users-view'))).toBeVisible().withTimeout(2000);
|
||||
await element(by.id(`select-users-view-item-${ data.alternateUser }`)).tap();
|
||||
await waitFor(element(by.id(`selected-user-${ data.alternateUser }`))).toBeVisible().withTimeout(5000);
|
||||
await sleep(1000);
|
||||
await element(by.id('selected-users-view-submit')).tap();
|
||||
await waitFor(element(by.id('create-channel-view'))).toBeVisible().withTimeout(5000);
|
||||
await sleep(1000);
|
||||
await waitFor(element(by.id('create-channel-view'))).toExist().withTimeout(5000);
|
||||
await element(by.id('create-channel-name')).replaceText(`broadcast${ data.random }`);
|
||||
await element(by.id('create-channel-broadcast')).tap();
|
||||
await element(by.id('create-channel-submit')).tap();
|
||||
await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.id('room-view'))).toBeVisible();
|
||||
await waitFor(element(by.text(`broadcast${ data.random }`))).toExist().withTimeout(60000);
|
||||
await expect(element(by.text(`broadcast${ data.random }`))).toExist();
|
||||
await waitFor(element(by.id(`room-view-title-broadcast${ data.random }`))).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.id(`room-view-title-broadcast${ data.random }`))).toBeVisible();
|
||||
await sleep(1000);
|
||||
await element(by.id('room-view-header-actions')).tap();
|
||||
await sleep(1000);
|
||||
await waitFor(element(by.id('room-actions-view'))).toBeVisible().withTimeout(5000);
|
||||
await element(by.id('room-actions-info')).tap();
|
||||
await waitFor(element(by.id('room-info-view'))).toBeVisible().withTimeout(2000);
|
||||
|
@ -50,34 +80,38 @@ describe('Broadcast room', () => {
|
|||
await element(by.id('messagebox-input')).tap();
|
||||
await element(by.id('messagebox-input')).typeText(`${ data.random }message`);
|
||||
await element(by.id('messagebox-send-message')).tap();
|
||||
await waitFor(element(by.text(`${ data.random }message`))).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.text(`${ data.random }message`))).toBeVisible();
|
||||
// await waitFor(element(by.label(`${ data.random }message`)).atIndex(0)).toBeVisible().withTimeout(60000);
|
||||
// await expect(element(by.label(`${ data.random }message`)).atIndex(0)).toBeVisible();
|
||||
await sleep(5000);
|
||||
await tapBack();
|
||||
});
|
||||
|
||||
it('should login as user without write message authorization and enter room', async() => {
|
||||
await tapBack();
|
||||
await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(2000);
|
||||
await expect(element(by.id('rooms-list-view'))).toBeVisible();
|
||||
await logout();
|
||||
await navigateToLogin();
|
||||
await localNavigateToLogin();
|
||||
|
||||
// 2FA login in stable:detox
|
||||
await element(by.id('login-view-email')).replaceText(data.alternateUser);
|
||||
await element(by.id('login-view-password')).replaceText(data.alternateUserPassword);
|
||||
await sleep(2000);
|
||||
await element(by.id('login-view-submit')).tap();
|
||||
const code = GA.gen(data.alternateUserTOTPSecret);
|
||||
await element(by.id('login-view-totp')).replaceText(code);
|
||||
await sleep(2000);
|
||||
await element(by.id('login-view-submit')).tap();
|
||||
await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(10000);
|
||||
// await device.reloadReactNative(); // remove after fix logout
|
||||
// await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(10000);
|
||||
await element(by.id('rooms-list-view-search')).replaceText(`broadcast${ data.random }`);
|
||||
await element(by.type('UIScrollView')).atIndex(1).scrollTo('top');
|
||||
await element(by.id('rooms-list-view-search')).typeText(`broadcast${ data.random }`);
|
||||
await sleep(2000);
|
||||
await waitFor(element(by.id(`rooms-list-view-item-broadcast${ data.random }`))).toExist().withTimeout(60000);
|
||||
await expect(element(by.id(`rooms-list-view-item-broadcast${ data.random }`))).toExist();
|
||||
await element(by.id(`rooms-list-view-item-broadcast${ data.random }`)).tap();
|
||||
await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000);
|
||||
await waitFor(element(by.text(`broadcast${ data.random }`))).toExist().withTimeout(60000);
|
||||
await expect(element(by.text(`broadcast${ data.random }`))).toExist();
|
||||
await waitFor(element(by.id(`room-view-title-broadcast${ data.random }`))).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.id(`room-view-title-broadcast${ data.random }`))).toBeVisible();
|
||||
await sleep(1000);
|
||||
});
|
||||
|
||||
it('should not have messagebox', async() => {
|
||||
|
@ -85,34 +119,33 @@ describe('Broadcast room', () => {
|
|||
});
|
||||
|
||||
it('should be read only', async() => {
|
||||
await expect(element(by.text('This room is read only'))).toBeVisible();
|
||||
await expect(element(by.label('This room is read only'))).toExist();
|
||||
});
|
||||
|
||||
it('should have the message created earlier', async() => {
|
||||
await waitFor(element(by.text(`${ data.random }message`))).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.text(`${ data.random }message`))).toBeVisible();
|
||||
await waitFor(element(by.label(`${ data.random }message`)).atIndex(0)).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.label(`${ data.random }message`)).atIndex(0)).toBeVisible();
|
||||
});
|
||||
|
||||
it('should have reply button', async() => {
|
||||
await expect(element(by.text('Reply'))).toBeVisible();
|
||||
await expect(element(by.id('message-broadcast-reply'))).toBeVisible();
|
||||
});
|
||||
|
||||
it('should tap on reply button and navigate to direct room', async() => {
|
||||
await element(by.text('Reply')).tap();
|
||||
await waitFor(element(by.text(data.user)).atIndex(0)).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.text(data.user)).atIndex(0)).toBeVisible();
|
||||
await element(by.id('message-broadcast-reply')).tap();
|
||||
await sleep(1000);
|
||||
await waitFor(element(by.id(`room-view-title-${ data.user }`))).toBeVisible().withTimeout(5000);
|
||||
await expect(element(by.id(`room-view-title-${ data.user }`))).toBeVisible();
|
||||
});
|
||||
|
||||
it('should reply broadcasted message', async() => {
|
||||
await element(by.id('messagebox-input')).tap();
|
||||
await element(by.id('messagebox-input')).typeText(`${ data.random }broadcastreply`);
|
||||
await sleep(1000);
|
||||
await element(by.id('messagebox-send-message')).tap();
|
||||
// await waitFor(element(by.text(`${ data.random }message`))).toBeVisible().withTimeout(60000);
|
||||
// await expect(element(by.text(`${ data.random }message`))).toBeVisible();
|
||||
});
|
||||
|
||||
afterEach(async() => {
|
||||
takeScreenshot();
|
||||
await sleep(1000);
|
||||
await waitFor(element(by.label(`${ data.random }broadcastreply`)).atIndex(0)).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.label(`${ data.random }broadcastreply`)).atIndex(0)).toBeVisible();
|
||||
});
|
||||
|
||||
after(async() => {
|
||||
|
@ -120,7 +153,7 @@ describe('Broadcast room', () => {
|
|||
await tapBack();
|
||||
await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(2000);
|
||||
await logout();
|
||||
await navigateToLogin();
|
||||
await localNavigateToLogin();
|
||||
await login();
|
||||
})
|
||||
});
|
||||
|
|
|
@ -1,12 +1,19 @@
|
|||
const {
|
||||
device, expect, element, by, waitFor
|
||||
} = require('detox');
|
||||
const { takeScreenshot } = require('./helpers/screenshot');
|
||||
const { logout, navigateToLogin, login } = require('./helpers/app');
|
||||
const { logout, navigateToLogin, login, sleep } = require('./helpers/app');
|
||||
const data = require('./data');
|
||||
|
||||
const scrollDown = 200;
|
||||
|
||||
async function waitForToast() {
|
||||
// await waitFor(element(by.id('toast'))).toBeVisible().withTimeout(10000);
|
||||
// await expect(element(by.id('toast'))).toBeVisible();
|
||||
// await waitFor(element(by.id('toast'))).toBeNotVisible().withTimeout(10000);
|
||||
// await expect(element(by.id('toast'))).toBeNotVisible();
|
||||
await sleep(5000);
|
||||
}
|
||||
|
||||
describe('Profile screen', () => {
|
||||
before(async() => {
|
||||
await element(by.id('rooms-list-view-sidebar')).tap();
|
||||
|
@ -66,50 +73,35 @@ describe('Profile screen', () => {
|
|||
await waitFor(element(by.id('profile-view-submit'))).toExist().whileElement(by.id('profile-view-list')).scroll(scrollDown, 'down');
|
||||
await expect(element(by.id('profile-view-submit'))).toExist();
|
||||
});
|
||||
|
||||
after(async() => {
|
||||
takeScreenshot();
|
||||
});
|
||||
});
|
||||
|
||||
describe('Usage', async() => {
|
||||
it('should change name and username', async() => {
|
||||
await element(by.id('profile-view-list')).swipe('down');
|
||||
await element(by.type('UIScrollView')).atIndex(1).swipe('down');
|
||||
await element(by.id('profile-view-name')).replaceText(`${ data.user }new`);
|
||||
await element(by.id('profile-view-username')).replaceText(`${ data.user }new`);
|
||||
await element(by.id('profile-view-list')).swipe('up');
|
||||
await sleep(1000);
|
||||
await element(by.type('UIScrollView')).atIndex(1).swipe('up');
|
||||
await sleep(1000);
|
||||
await element(by.id('profile-view-submit')).tap();
|
||||
await waitFor(element(by.text('Profile saved successfully!'))).toBeVisible().withTimeout(10000);
|
||||
// await expect(element(by.text('Profile saved successfully!'))).toBeVisible();
|
||||
await waitFor(element(by.text('Profile saved successfully!'))).toBeNotVisible().withTimeout(10000);
|
||||
await expect(element(by.text('Profile saved successfully!'))).toBeNotVisible();
|
||||
await waitForToast();
|
||||
});
|
||||
|
||||
it('should change email and password', async() => {
|
||||
await element(by.id('profile-view-email')).replaceText(`diego.mello+e2e${ data.random }test@rocket.chat`);
|
||||
await element(by.id('profile-view-new-password')).replaceText(`${ data.password }new`);
|
||||
await element(by.id('profile-view-submit')).tap();
|
||||
await waitFor(element(by.id('profile-view-typed-password'))).toBeVisible().withTimeout(10000);
|
||||
await expect(element(by.id('profile-view-typed-password'))).toBeVisible();
|
||||
await element(by.id('profile-view-typed-password')).replaceText(`${ data.password }`);
|
||||
await element(by.text('Save')).tap();
|
||||
await waitFor(element(by.text('Profile saved successfully!'))).toBeVisible().withTimeout(10000);
|
||||
// await expect(element(by.text('Profile saved successfully!'))).toBeVisible();
|
||||
await waitFor(element(by.text('Profile saved successfully!'))).toBeNotVisible().withTimeout(10000);
|
||||
await expect(element(by.text('Profile saved successfully!'))).toBeNotVisible();
|
||||
await element(by.type('_UIAlertControllerTextField')).replaceText(`${ data.password }`)
|
||||
// For some reason, replaceText does some type of submit, which submits the alert for us
|
||||
// await element(by.label('Save').and(by.type('_UIAlertControllerActionView'))).tap();
|
||||
await waitForToast();
|
||||
});
|
||||
|
||||
it('should reset avatar', async() => {
|
||||
await element(by.id('profile-view-list')).swipe('up');
|
||||
await element(by.type('UIScrollView')).atIndex(1).swipe('up');
|
||||
await sleep(1000);
|
||||
await element(by.id('profile-view-reset-avatar')).tap();
|
||||
await waitFor(element(by.text('Avatar changed successfully!'))).toBeVisible().withTimeout(10000);
|
||||
// await expect(element(by.text('Avatar changed successfully!'))).toBeVisible();
|
||||
await waitFor(element(by.text('Avatar changed successfully!'))).toBeNotVisible().withTimeout(10000);
|
||||
await expect(element(by.text('Avatar changed successfully!'))).toBeNotVisible();
|
||||
});
|
||||
|
||||
after(async() => {
|
||||
takeScreenshot();
|
||||
await waitForToast();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
@ -1,12 +1,11 @@
|
|||
const {
|
||||
device, expect, element, by, waitFor
|
||||
} = require('detox');
|
||||
const { takeScreenshot } = require('./helpers/screenshot');
|
||||
const { logout, navigateToLogin, login } = require('./helpers/app');
|
||||
|
||||
describe('Settings screen', () => {
|
||||
before(async() => {
|
||||
await device.reloadReactNative();
|
||||
await device.launchApp({ newInstance: true });
|
||||
await expect(element(by.id('rooms-list-view'))).toBeVisible();
|
||||
await element(by.id('rooms-list-view-sidebar')).tap();
|
||||
await waitFor(element(by.id('sidebar-view'))).toBeVisible().withTimeout(2000);
|
||||
|
@ -44,10 +43,6 @@ describe('Settings screen', () => {
|
|||
it('should have server version', async() => {
|
||||
await expect(element(by.id('settings-view-server-version'))).toExist();
|
||||
});
|
||||
|
||||
after(async() => {
|
||||
takeScreenshot();
|
||||
});
|
||||
});
|
||||
|
||||
describe('Language', async() => {
|
||||
|
@ -63,28 +58,25 @@ describe('Settings screen', () => {
|
|||
await expect(element(by.id('language-view-ru'))).toExist();
|
||||
});
|
||||
|
||||
it('should navigate to change language', async() => {
|
||||
await expect(element(by.id('language-view-zh-CN'))).toExist();
|
||||
await element(by.id('language-view-zh-CN')).tap()
|
||||
await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.id('rooms-list-view'))).toBeVisible();
|
||||
await element(by.id('rooms-list-view-sidebar')).tap();
|
||||
await waitFor(element(by.id('sidebar-view'))).toBeVisible().withTimeout(2000);
|
||||
await waitFor(element(by.text('设置'))).toBeVisible().withTimeout(2000);
|
||||
await element(by.text('设置')).tap();
|
||||
await waitFor(element(by.id('settings-view'))).toBeVisible().withTimeout(2000);
|
||||
await element(by.id('settings-view-language')).tap();
|
||||
await element(by.id('language-view-en')).tap();
|
||||
await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(60000);
|
||||
await expect(element(by.id('rooms-list-view'))).toBeVisible();
|
||||
await element(by.id('rooms-list-view-sidebar')).tap();
|
||||
await waitFor(element(by.id('sidebar-view'))).toBeVisible().withTimeout(2000);
|
||||
await expect(element(by.text('Settings'))).toBeVisible();
|
||||
await element(by.text('Settings')).tap();
|
||||
await expect(element(by.id('settings-view'))).toBeVisible();
|
||||
});
|
||||
after(async() => {
|
||||
takeScreenshot();
|
||||
});
|
||||
// it('should navigate to change language', async() => {
|
||||
// await expect(element(by.id('language-view-zh-CN'))).toExist();
|
||||
// await element(by.id('language-view-zh-CN')).tap()
|
||||
// await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(60000);
|
||||
// await expect(element(by.id('rooms-list-view'))).toBeVisible();
|
||||
// await element(by.id('rooms-list-view-sidebar')).tap();
|
||||
// await waitFor(element(by.id('sidebar-view'))).toBeVisible().withTimeout(2000);
|
||||
// await waitFor(element(by.text('设置'))).toBeVisible().withTimeout(2000);
|
||||
// await element(by.text('设置')).tap();
|
||||
// await waitFor(element(by.id('settings-view'))).toBeVisible().withTimeout(2000);
|
||||
// await element(by.id('settings-view-language')).tap();
|
||||
// await element(by.id('language-view-en')).tap();
|
||||
// await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(60000);
|
||||
// await expect(element(by.id('rooms-list-view'))).toBeVisible();
|
||||
// await element(by.id('rooms-list-view-sidebar')).tap();
|
||||
// await waitFor(element(by.id('sidebar-view'))).toBeVisible().withTimeout(2000);
|
||||
// await expect(element(by.text('Settings'))).toBeVisible();
|
||||
// await element(by.text('Settings')).tap();
|
||||
// await expect(element(by.id('settings-view'))).toBeVisible();
|
||||
// });
|
||||
});
|
||||
});
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
const {
|
||||
device, expect, element, by, waitFor
|
||||
} = require('detox');
|
||||
const { takeScreenshot } = require('./helpers/screenshot');
|
||||
const data = require('./data');
|
||||
const { tapBack, sleep } = require('./helpers/app');
|
||||
|
||||
|
@ -11,25 +10,30 @@ async function mockMessage(message) {
|
|||
await element(by.id('messagebox-input')).tap();
|
||||
await element(by.id('messagebox-input')).typeText(`${ data.random }${ message }`);
|
||||
await element(by.id('messagebox-send-message')).tap();
|
||||
await waitFor(element(by.text(`${ data.random }${ message }`))).toExist().withTimeout(60000);
|
||||
await waitFor(element(by.label(`${ data.random }${ message }`)).atIndex(0)).toExist().withTimeout(60000);
|
||||
await sleep(1000);
|
||||
};
|
||||
|
||||
async function navigateToRoom() {
|
||||
await element(by.id('rooms-list-view-search')).replaceText(room);
|
||||
await sleep(2000);
|
||||
await waitFor(element(by.id(`rooms-list-view-item-${ room }`))).toBeVisible().withTimeout(60000);
|
||||
await element(by.id(`rooms-list-view-item-${ room }`)).tap();
|
||||
await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000);
|
||||
await element(by.type('UIScrollView')).atIndex(1).scrollTo('top');
|
||||
await element(by.id('rooms-list-view-search')).typeText(room);
|
||||
await sleep(2000);
|
||||
await waitFor(element(by.id(`rooms-list-view-item-${ room }`)).atIndex(0)).toBeVisible().withTimeout(60000);
|
||||
await element(by.id(`rooms-list-view-item-${ room }`)).atIndex(0).tap();
|
||||
await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(5000);
|
||||
}
|
||||
|
||||
async function navigateToRoomActions() {
|
||||
await sleep(2000);
|
||||
await element(by.id('room-view-header-actions')).tap();
|
||||
await sleep(2000);
|
||||
await waitFor(element(by.id('room-actions-view'))).toBeVisible().withTimeout(5000);
|
||||
}
|
||||
|
||||
describe('Join public room', () => {
|
||||
before(async() => {
|
||||
await device.reloadReactNative();
|
||||
await device.launchApp({ newInstance: true });
|
||||
await navigateToRoom();
|
||||
});
|
||||
|
||||
|
@ -38,9 +42,9 @@ describe('Join public room', () => {
|
|||
await expect(element(by.id('room-view'))).toBeVisible();
|
||||
});
|
||||
|
||||
it('should have messages list', async() => {
|
||||
await expect(element(by.id('room-view-messages'))).toBeVisible();
|
||||
});
|
||||
// it('should have messages list', async() => {
|
||||
// await expect(element(by.id('room-view-messages'))).toBeVisible();
|
||||
// });
|
||||
|
||||
// Render - Header
|
||||
describe('Header', async() => {
|
||||
|
@ -56,7 +60,7 @@ describe('Join public room', () => {
|
|||
});
|
||||
|
||||
it('should have join text', async() => {
|
||||
await expect(element(by.text('You are in preview mode'))).toBeVisible();
|
||||
await expect(element(by.label('You are in preview mode'))).toBeVisible();
|
||||
});
|
||||
|
||||
it('should have join button', async() => {
|
||||
|
@ -81,13 +85,13 @@ describe('Join public room', () => {
|
|||
await expect(element(by.id('room-actions-info'))).toBeVisible();
|
||||
});
|
||||
|
||||
it('should have voice', async() => {
|
||||
await expect(element(by.id('room-actions-voice'))).toBeVisible();
|
||||
});
|
||||
// it('should have voice', async() => {
|
||||
// await expect(element(by.id('room-actions-voice'))).toBeVisible();
|
||||
// });
|
||||
|
||||
it('should have video', async() => {
|
||||
await expect(element(by.id('room-actions-video'))).toBeVisible();
|
||||
});
|
||||
// it('should have video', async() => {
|
||||
// await expect(element(by.id('room-actions-video'))).toBeVisible();
|
||||
// });
|
||||
|
||||
it('should have members', async() => {
|
||||
await expect(element(by.id('room-actions-members'))).toBeVisible();
|
||||
|
@ -110,7 +114,7 @@ describe('Join public room', () => {
|
|||
});
|
||||
|
||||
it('should have share', async() => {
|
||||
await element(by.id('room-actions-list')).swipe('up');
|
||||
await element(by.type('UIScrollView')).atIndex(1).swipe('down');
|
||||
await expect(element(by.id('room-actions-share'))).toBeVisible();
|
||||
});
|
||||
|
||||
|
@ -131,10 +135,6 @@ describe('Join public room', () => {
|
|||
await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(2000);
|
||||
})
|
||||
});
|
||||
|
||||
after(async() => {
|
||||
takeScreenshot();
|
||||
});
|
||||
});
|
||||
|
||||
describe('Usage', async() => {
|
||||
|
@ -150,47 +150,38 @@ describe('Join public room', () => {
|
|||
|
||||
it('should send message', async() => {
|
||||
await mockMessage('message');
|
||||
await expect(element(by.text(`${ data.random }message`))).toExist();
|
||||
await expect(element(by.label(`${ data.random }message`)).atIndex(0)).toExist();
|
||||
await element(by.label(`${ data.random }message`)).atIndex(0).tap();
|
||||
});
|
||||
|
||||
it('should have disable notifications and leave channel', async() => {
|
||||
await navigateToRoomActions('c');
|
||||
await expect(element(by.id('room-actions-view'))).toBeVisible();
|
||||
await expect(element(by.id('room-actions-info'))).toBeVisible();
|
||||
await expect(element(by.id('room-actions-voice'))).toBeVisible();
|
||||
await expect(element(by.id('room-actions-video'))).toBeVisible();
|
||||
// await expect(element(by.id('room-actions-voice'))).toBeVisible();
|
||||
// await expect(element(by.id('room-actions-video'))).toBeVisible();
|
||||
await expect(element(by.id('room-actions-members'))).toBeVisible();
|
||||
await expect(element(by.id('room-actions-files'))).toBeVisible();
|
||||
await expect(element(by.id('room-actions-mentioned'))).toBeVisible();
|
||||
await expect(element(by.id('room-actions-starred'))).toBeVisible();
|
||||
await expect(element(by.id('room-actions-search'))).toBeVisible();
|
||||
await element(by.id('room-actions-list')).swipe('up');
|
||||
await element(by.type('UIScrollView')).atIndex(1).swipe('down');
|
||||
await expect(element(by.id('room-actions-share'))).toBeVisible();
|
||||
await expect(element(by.id('room-actions-pinned'))).toBeVisible();
|
||||
await expect(element(by.id('room-actions-notifications'))).toBeVisible();
|
||||
await expect(element(by.id('room-actions-leave-channel'))).toBeVisible();
|
||||
});
|
||||
|
||||
// TODO: fix CI to pass with this test
|
||||
// it('should leave room', async() => {
|
||||
// await element(by.id('room-actions-leave-channel')).tap();
|
||||
// await waitFor(element(by.text('Yes, leave it!'))).toBeVisible().withTimeout(5000);
|
||||
// await expect(element(by.text('Yes, leave it!'))).toBeVisible();
|
||||
// await element(by.text('Yes, leave it!')).tap();
|
||||
// await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(10000);
|
||||
// await element(by.id('rooms-list-view-search')).replaceText('');
|
||||
// await sleep(2000);
|
||||
// await waitFor(element(by.id(`rooms-list-view-item-${ room }`))).toBeNotVisible().withTimeout(60000);
|
||||
// await expect(element(by.id(`rooms-list-view-item-${ room }`))).toBeNotVisible();
|
||||
// });
|
||||
//
|
||||
// it('should navigate to room and user should be joined', async() => {
|
||||
// await navigateToRoom();
|
||||
// await expect(element(by.id('room-view-join'))).toBeVisible();
|
||||
// })
|
||||
|
||||
after(async() => {
|
||||
takeScreenshot();
|
||||
it('should leave room', async() => {
|
||||
await element(by.id('room-actions-leave-channel')).tap();
|
||||
await waitFor(element(by.text('Yes, leave it!'))).toBeVisible().withTimeout(5000);
|
||||
await expect(element(by.text('Yes, leave it!'))).toBeVisible();
|
||||
await element(by.text('Yes, leave it!')).tap();
|
||||
await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(10000);
|
||||
// await element(by.id('rooms-list-view-search')).typeText('');
|
||||
await sleep(2000);
|
||||
await waitFor(element(by.id(`rooms-list-view-item-${ room }`))).toBeNotVisible().withTimeout(60000);
|
||||
await expect(element(by.id(`rooms-list-view-item-${ room }`))).toBeNotVisible();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
@ -30,6 +30,7 @@ async function login() {
|
|||
await waitFor(element(by.id('login-view'))).toBeVisible().withTimeout(2000);
|
||||
await element(by.id('login-view-email')).replaceText(data.user);
|
||||
await element(by.id('login-view-password')).replaceText(data.password);
|
||||
await sleep(300);
|
||||
await element(by.id('login-view-submit')).tap();
|
||||
await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(10000);
|
||||
}
|
||||
|
@ -37,9 +38,16 @@ async function login() {
|
|||
async function logout() {
|
||||
await element(by.id('rooms-list-view-sidebar')).tap();
|
||||
await waitFor(element(by.id('sidebar-view'))).toBeVisible().withTimeout(2000);
|
||||
await waitFor(element(by.id('sidebar-logout'))).toBeVisible().withTimeout(2000);
|
||||
await element(by.id('sidebar-logout')).tap();
|
||||
await waitFor(element(by.id('onboarding-view'))).toBeVisible().withTimeout(2000);
|
||||
await waitFor(element(by.id('sidebar-settings'))).toBeVisible().withTimeout(2000);
|
||||
await element(by.id('sidebar-settings')).tap();
|
||||
await waitFor(element(by.id('settings-view'))).toBeVisible().withTimeout(2000);
|
||||
await element(by.type('UIScrollView')).atIndex(1).scrollTo('bottom');
|
||||
await element(by.id('settings-logout')).tap();
|
||||
const logoutAlertMessage = 'You will be logged out of this application.';
|
||||
await waitFor(element(by.text(logoutAlertMessage)).atIndex(0)).toExist().withTimeout(10000);
|
||||
await expect(element(by.text(logoutAlertMessage)).atIndex(0)).toExist();
|
||||
await element(by.text('Logout')).tap();
|
||||
await waitFor(element(by.id('onboarding-view'))).toBeVisible().withTimeout(10000);
|
||||
await expect(element(by.id('onboarding-view'))).toBeVisible();
|
||||
}
|
||||
|
||||
|
|
|
@ -1,23 +0,0 @@
|
|||
const { execSync } = require('child_process');
|
||||
const { existsSync, mkdirSync } = require('fs');
|
||||
|
||||
const SCREENSHOT_DIR = '/tmp/screenshots';
|
||||
|
||||
const SCREENSHOT_OPTIONS = {
|
||||
timeout: 2000,
|
||||
killSignal: 'SIGKILL'
|
||||
};
|
||||
|
||||
let screenshotIndex = 0;
|
||||
|
||||
const takeScreenshot = () => {
|
||||
if (!existsSync(SCREENSHOT_DIR)) { mkdirSync(SCREENSHOT_DIR); }
|
||||
const screenshotFilename = `${ SCREENSHOT_DIR }/screenshot-${ screenshotIndex++ }.png`;
|
||||
try {
|
||||
execSync(`xcrun simctl io booted screenshot ${ screenshotFilename }`, SCREENSHOT_OPTIONS);
|
||||
} catch (error) {
|
||||
console.log('erro');
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = { takeScreenshot };
|
|
@ -0,0 +1,43 @@
|
|||
{
|
||||
"name": "SocketRocket",
|
||||
"version": "0.5.1",
|
||||
"summary": "A conforming WebSocket (RFC 6455) client library for iOS, macOS and tvOS.",
|
||||
"homepage": "https://github.com/facebook/SocketRocket",
|
||||
"authors": {
|
||||
"Nikita Lutsenko": "nlutsenko@me.com",
|
||||
"Dan Federman": "federman@squareup.com",
|
||||
"Mike Lewis": "mikelikespie@gmail.com"
|
||||
},
|
||||
"license": "BSD",
|
||||
"source": {
|
||||
"git": "https://github.com/facebook/SocketRocket.git",
|
||||
"tag": "0.5.1"
|
||||
},
|
||||
"requires_arc": true,
|
||||
"source_files": "SocketRocket/**/*.{h,m}",
|
||||
"public_header_files": "SocketRocket/*.h",
|
||||
"platforms": {
|
||||
"ios": "6.0",
|
||||
"osx": "10.8",
|
||||
"tvos": "9.0"
|
||||
},
|
||||
"ios": {
|
||||
"frameworks": [
|
||||
"CFNetwork",
|
||||
"Security"
|
||||
]
|
||||
},
|
||||
"osx": {
|
||||
"frameworks": [
|
||||
"CoreServices",
|
||||
"Security"
|
||||
]
|
||||
},
|
||||
"tvos": {
|
||||
"frameworks": [
|
||||
"CFNetwork",
|
||||
"Security"
|
||||
]
|
||||
},
|
||||
"libraries": "icucore"
|
||||
}
|
|
@ -56,7 +56,6 @@
|
|||
"react-native-bootsplash": "^1.1.0",
|
||||
"react-native-console-time-polyfill": "^1.2.1",
|
||||
"react-native-device-info": "^2.3.0",
|
||||
"react-native-dialog": "^5.6.0",
|
||||
"react-native-document-picker": "^3.2.4",
|
||||
"react-native-easy-toast": "^1.2.0",
|
||||
"react-native-fast-image": "^7.0.2",
|
||||
|
@ -81,6 +80,7 @@
|
|||
"react-native-platform-touchable": "^1.1.1",
|
||||
"react-native-popover-view": "^2.0.5",
|
||||
"react-native-progress": "^4.0.3",
|
||||
"react-native-prompt-android": "^1.1.0",
|
||||
"react-native-reanimated": "1.4.0",
|
||||
"react-native-responsive-ui": "^1.1.1",
|
||||
"react-native-screens": "^2.0.0-alpha.3",
|
||||
|
@ -128,7 +128,7 @@
|
|||
"babel-runtime": "^6.26.0",
|
||||
"bugsnag-sourcemaps": "^1.2.2",
|
||||
"codecov": "3.5.0",
|
||||
"detox": "12.11.3",
|
||||
"detox": "^15.2.2",
|
||||
"emotion-theming": "^10.0.19",
|
||||
"eslint": "^6.5.1",
|
||||
"eslint-config-airbnb": "17.1.1",
|
||||
|
@ -176,13 +176,13 @@
|
|||
"binaryPath": "ios/build/Build/Products/Debug-iphonesimulator/RocketChatRN.app",
|
||||
"build": "xcodebuild -workspace ios/RocketChatRN.xcworkspace -scheme RocketChatRN -configuration Debug -sdk iphonesimulator -derivedDataPath ios/build",
|
||||
"type": "ios.simulator",
|
||||
"name": "iPhone 7"
|
||||
"name": "iPhone 11 Pro"
|
||||
},
|
||||
"ios.sim.release": {
|
||||
"binaryPath": "ios/build/Build/Products/Release-iphonesimulator/RocketChatRN.app",
|
||||
"build": "xcodebuild -workspace ios/RocketChatRN.xcworkspace -scheme RocketChatRN -configuration Release -sdk iphonesimulator -derivedDataPath ios/build",
|
||||
"type": "ios.simulator",
|
||||
"name": "iPhone 7"
|
||||
"name": "iPhone 11 Pro"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
39
yarn.lock
39
yarn.lock
|
@ -3810,10 +3810,10 @@ detect-newline@^2.1.0:
|
|||
resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2"
|
||||
integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=
|
||||
|
||||
detox@12.11.3:
|
||||
version "12.11.3"
|
||||
resolved "https://registry.yarnpkg.com/detox/-/detox-12.11.3.tgz#510de28c47f2542a8bc4ddab4ceaa7859e1db7e9"
|
||||
integrity sha512-Ds1x6VLWjUsIR6FDXORan7NxRlugI4RCCpH5n3L++UIBuMvSicaWSKcmU0rCYCFUeluKDofx+QBgnEryNxRUSg==
|
||||
detox@^15.2.2:
|
||||
version "15.2.2"
|
||||
resolved "https://registry.yarnpkg.com/detox/-/detox-15.2.2.tgz#490a8c54944f658492490f8dc88c0946a57c9197"
|
||||
integrity sha512-lmtRTrl7gW5noBaCJZr3WCEv5hvTw6DK2p81ATGUL1pImxpjeHhJJhTYAq5taz0kl706g9DOxFao8i/NgBR4bg==
|
||||
dependencies:
|
||||
"@babel/core" "^7.4.5"
|
||||
bunyan "^1.8.12"
|
||||
|
@ -3832,6 +3832,7 @@ detox@12.11.3:
|
|||
tail "^2.0.0"
|
||||
telnet-client "0.15.3"
|
||||
tempfile "^2.0.0"
|
||||
which "^1.3.1"
|
||||
ws "^3.3.1"
|
||||
yargs "^13.0.0"
|
||||
yargs-parser "^13.0.0"
|
||||
|
@ -9380,13 +9381,6 @@ react-native-animatable@1.3.3:
|
|||
dependencies:
|
||||
prop-types "^15.7.2"
|
||||
|
||||
react-native-animatable@^1.2.4:
|
||||
version "1.3.1"
|
||||
resolved "https://registry.yarnpkg.com/react-native-animatable/-/react-native-animatable-1.3.1.tgz#f004a7e9de6838d0fbf210d642593cff7affd9ef"
|
||||
integrity sha512-NoE6OAgCrhggWBRV6rBJup5vLAGoTjx168Tku1RZmjUGIdYRAyGesP/MoqvxiNJjhTAgwYx2LT63VTT1xO8g4Q==
|
||||
dependencies:
|
||||
prop-types "^15.5.10"
|
||||
|
||||
react-native-appearance@^0.3.1:
|
||||
version "0.3.1"
|
||||
resolved "https://registry.yarnpkg.com/react-native-appearance/-/react-native-appearance-0.3.1.tgz#f8120222131767e9227c2c7ba3a9478f4c6a5ab7"
|
||||
|
@ -9421,14 +9415,6 @@ react-native-device-info@^2.3.0:
|
|||
resolved "https://registry.yarnpkg.com/react-native-device-info/-/react-native-device-info-2.3.2.tgz#db2b8f135aaf2515583e367ab791dcc7d2f0d14c"
|
||||
integrity sha512-ccpPuUbwhw5uYdVwN1UJp6ykMZz6U/u82HNM3oJ7O6MP8RIMlMDkHbqR4O0sDtUSuRMGiqqRzFtmOLFYeQ0ODw==
|
||||
|
||||
react-native-dialog@^5.6.0:
|
||||
version "5.6.0"
|
||||
resolved "https://registry.yarnpkg.com/react-native-dialog/-/react-native-dialog-5.6.0.tgz#8c36a1e9f397eba0cea88821ebcf92f029236a1a"
|
||||
integrity sha512-pUTxHJHzErMY+JaDRSMKiCbJTEdy2Ik4hcNOwasOlxpj6S6tT5SonLsrLPGBCO0XpTOySE0qVzuikmKgUDZfig==
|
||||
dependencies:
|
||||
prop-types "^15.7.2"
|
||||
react-native-modal "^9.0.0"
|
||||
|
||||
react-native-document-picker@^3.2.4:
|
||||
version "3.2.4"
|
||||
resolved "https://registry.yarnpkg.com/react-native-document-picker/-/react-native-document-picker-3.2.4.tgz#8e1801ba9b81f42f928e8e5e519c3d8e1320cfab"
|
||||
|
@ -9542,14 +9528,6 @@ react-native-modal@11.5.3:
|
|||
prop-types "^15.6.2"
|
||||
react-native-animatable "1.3.3"
|
||||
|
||||
react-native-modal@^9.0.0:
|
||||
version "9.0.0"
|
||||
resolved "https://registry.yarnpkg.com/react-native-modal/-/react-native-modal-9.0.0.tgz#0bfd0770361a2e5c6e0072bfdb0f1277f9662dba"
|
||||
integrity sha512-j4xeIK9noHU/ksp2Ndc8NI1qJvjApToqGvqLEu2wtYeaISanbhtd0S3V4hZkSlCa3DZtegl6aaMZBLeH1q6xfA==
|
||||
dependencies:
|
||||
prop-types "^15.6.2"
|
||||
react-native-animatable "^1.2.4"
|
||||
|
||||
react-native-modalize@^1.3.6:
|
||||
version "1.3.6"
|
||||
resolved "https://registry.yarnpkg.com/react-native-modalize/-/react-native-modalize-1.3.6.tgz#1a8651f673dbaccb9ebef908688bbd72b7790470"
|
||||
|
@ -9600,6 +9578,11 @@ react-native-progress@^4.0.3:
|
|||
"@react-native-community/art" "^1.0.3"
|
||||
prop-types "^15.7.2"
|
||||
|
||||
react-native-prompt-android@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/react-native-prompt-android/-/react-native-prompt-android-1.1.0.tgz#3c5168029075cb9f72549fd5f92403372fb234e9"
|
||||
integrity sha512-4JoyEaT2ZnK9IH+tDFpbTiQBgva8UIFGQf4/Uw/tnEVWBERlVlzcs5B82T9BkeEhEqXhp89JaiSBnLWj30lciw==
|
||||
|
||||
react-native-reanimated@1.4.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/react-native-reanimated/-/react-native-reanimated-1.4.0.tgz#7f1acbf9be08492d834f512700570978052be2f9"
|
||||
|
@ -12190,7 +12173,7 @@ which-module@^2.0.0:
|
|||
resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
|
||||
integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
|
||||
|
||||
which@^1.2.12, which@^1.2.9, which@^1.3.0:
|
||||
which@^1.2.12, which@^1.2.9, which@^1.3.0, which@^1.3.1:
|
||||
version "1.3.1"
|
||||
resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
|
||||
integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
|
||||
|
|
Loading…
Reference in New Issue