mirror of
https://github.com/BlueWallet/BlueWallet.git
synced 2025-02-22 06:52:41 +01:00
TST: ref e2e test
This commit is contained in:
parent
6357f88b84
commit
87b561ec88
2 changed files with 56 additions and 17 deletions
|
@ -1,6 +1,6 @@
|
|||
/* global alert */
|
||||
import React, { useState } from 'react';
|
||||
import { Image, View, TouchableOpacity, StatusBar, Platform, StyleSheet, Linking, Alert } from 'react-native';
|
||||
import { Image, View, TouchableOpacity, StatusBar, Platform, StyleSheet, Linking, Alert, TextInput } from 'react-native';
|
||||
import { RNCamera } from 'react-native-camera';
|
||||
import { Icon } from 'react-native-elements';
|
||||
import ImagePicker from 'react-native-image-picker';
|
||||
|
@ -10,7 +10,7 @@ import RNFS from 'react-native-fs';
|
|||
import loc from '../../loc';
|
||||
import { BlueLoadingHook, BlueTextHooks, BlueButtonHook, BlueSpacing40 } from '../../BlueComponents';
|
||||
import { getSystemName } from 'react-native-device-info';
|
||||
const prompt = require('../../blue_modules/prompt');
|
||||
import { BlueCurrentTheme } from '../../components/themes';
|
||||
const LocalQRCode = require('@remobile/react-native-qrcode-local-image');
|
||||
const createHash = require('create-hash');
|
||||
const isDesktop = getSystemName() === 'Mac OS X';
|
||||
|
@ -68,6 +68,19 @@ const styles = StyleSheet.create({
|
|||
backgroundColor: 'rgba(0,0,0,0.1)',
|
||||
position: 'absolute',
|
||||
},
|
||||
backdoorInputWrapper: { position: 'absolute', left: '5%', top: '0%', width: '90%', height: '70%', backgroundColor: 'white' },
|
||||
backdoorInput: {
|
||||
height: '50%',
|
||||
marginTop: 5,
|
||||
marginHorizontal: 20,
|
||||
borderColor: BlueCurrentTheme.colors.formBorder,
|
||||
borderBottomColor: BlueCurrentTheme.colors.formBorder,
|
||||
borderWidth: 1,
|
||||
borderRadius: 4,
|
||||
backgroundColor: BlueCurrentTheme.colors.inputBackgroundColor,
|
||||
color: BlueCurrentTheme.colors.foregroundColor,
|
||||
textAlignVertical: 'top',
|
||||
},
|
||||
});
|
||||
|
||||
const ScanQRCode = () => {
|
||||
|
@ -81,6 +94,8 @@ const ScanQRCode = () => {
|
|||
const isFocused = useIsFocused();
|
||||
const [cameraStatus, setCameraStatus] = useState(RNCamera.Constants.CameraStatus.PENDING_AUTHORIZATION);
|
||||
const [backdoorPressed, setBackdoorPressed] = useState(0);
|
||||
const [backdoorText, setBackdoorText] = useState('');
|
||||
const [backdoorVisible, setBackdoorVisible] = useState(false);
|
||||
const stylesHook = StyleSheet.create({
|
||||
openSettingsContainer: {
|
||||
backgroundColor: colors.brandingColor,
|
||||
|
@ -219,6 +234,40 @@ const ScanQRCode = () => {
|
|||
<Icon name="file-import" type="material-community" color="#ffffff" />
|
||||
</TouchableOpacity>
|
||||
)}
|
||||
{backdoorVisible && (
|
||||
<View style={styles.backdoorInputWrapper}>
|
||||
<BlueTextHooks>Provide QR code contents manually:</BlueTextHooks>
|
||||
<TextInput
|
||||
testID="scanQrBackdoorInput"
|
||||
multiline
|
||||
underlineColorAndroid="transparent"
|
||||
style={styles.backdoorInput}
|
||||
autoCorrect={false}
|
||||
autoCapitalize="none"
|
||||
spellCheck={false}
|
||||
selectTextOnFocus={false}
|
||||
keyboardType={Platform.OS === 'android' ? 'visible-password' : 'default'}
|
||||
value={backdoorText}
|
||||
onChangeText={setBackdoorText}
|
||||
/>
|
||||
<BlueButtonHook
|
||||
title="OK"
|
||||
testID="scanQrBackdoorOkButton"
|
||||
onPress={() => {
|
||||
setBackdoorVisible(false);
|
||||
let data;
|
||||
try {
|
||||
data = JSON.parse(backdoorText);
|
||||
// this might be a json string (for convenience - in case there are "\n" in there)
|
||||
} catch (_) {
|
||||
data = backdoorText;
|
||||
}
|
||||
|
||||
if (data) onBarCodeRead({ data });
|
||||
}}
|
||||
/>
|
||||
</View>
|
||||
)}
|
||||
<TouchableOpacity
|
||||
testID="ScanQrBackdoorButton"
|
||||
style={styles.backdoorButton}
|
||||
|
@ -229,16 +278,7 @@ const ScanQRCode = () => {
|
|||
setBackdoorPressed(backdoorPressed + 1);
|
||||
if (backdoorPressed < 10) return;
|
||||
setBackdoorPressed(0);
|
||||
let data, userInput;
|
||||
try {
|
||||
userInput = await prompt('Provide QR code contents manually:', '', false, 'plain-text');
|
||||
data = JSON.parse(userInput);
|
||||
// this might be a json string (for convenience - in case there are "\n" in there)
|
||||
} catch (_) {
|
||||
data = userInput;
|
||||
}
|
||||
|
||||
if (data) onBarCodeRead({ data });
|
||||
setBackdoorVisible(true);
|
||||
}}
|
||||
/>
|
||||
</View>
|
||||
|
|
|
@ -409,8 +409,8 @@ describe('BlueWallet UI Tests', () => {
|
|||
}
|
||||
|
||||
const bip21 = 'bitcoin:bc1qnapskphjnwzw2w3dk4anpxntunc77v6qrua0f7?amount=0.00015&pj=https://btc.donate.kukks.org/BTC/pj';
|
||||
await element(by.type('android.widget.EditText')).replaceText(bip21);
|
||||
await element(by.text('OK')).tap();
|
||||
await element(by.id('scanQrBackdoorInput')).replaceText(bip21);
|
||||
await element(by.id('scanQrBackdoorOkButton')).tap();
|
||||
|
||||
if (process.env.TRAVIS) await sleep(5000);
|
||||
try {
|
||||
|
@ -421,7 +421,6 @@ describe('BlueWallet UI Tests', () => {
|
|||
await yo('PayjoinSwitch');
|
||||
await element(by.id('TransactionDetailsButton')).tap();
|
||||
txhex = await extractTextFromElementById('TxhexInput');
|
||||
console.log({ txhex });
|
||||
transaction = bitcoin.Transaction.fromHex(txhex);
|
||||
assert.strictEqual(bitcoin.address.fromOutputScript(transaction.outs[0].script), 'bc1qnapskphjnwzw2w3dk4anpxntunc77v6qrua0f7');
|
||||
assert.strictEqual(transaction.outs[0].value, 15000);
|
||||
|
@ -509,8 +508,8 @@ describe('BlueWallet UI Tests', () => {
|
|||
|
||||
const randomTxHex =
|
||||
'020000000001011628f58e8e81bfcfff1b106bb8968e342fb86f09aa810ed2939e43d5127c51040200000000000000000227e42d000000000017a914c679a827d57a9b8b539515dbafb4e573d2bcc6ca87df15cf02000000002200209705cdfcbc459a220e7f39ffe547a31335505c2357f452ae12a22b9ae36ea59d04004730440220626c5205a6f49d1dd1577c85c0af4c5fc70f41de61f891d71a5cf57af09110d4022045bcb1e7d4e93e1a9baf6ae1ad0b4087c9e9f73ec366e97576912377d9f6904301473044022044aea98e8983f09cb0639f08d34526bb7e3ed47d208b7bf714fb29a1b5f9535a02200baa510b94cf434775b4aa2184682f2fb33f15e5e76f79aa0885e7ee12bdc8f70169522102e67ce679d617d674d68eea95ecb166c67b4b5520105c4745adf37ce8a40b92dc21029ff54b8bf26dbddd7bd4336593d2ff17519d5374989f36a6f5f8239675ff79a421039000ee2853c6db4bd956e80b1ecfb8711bf3e0a9a8886d15450c29458b60473153ae00000000';
|
||||
await element(by.type('android.widget.EditText')).replaceText(randomTxHex);
|
||||
await element(by.text('OK')).tap();
|
||||
await element(by.id('scanQrBackdoorInput')).replaceText(randomTxHex);
|
||||
await element(by.id('scanQrBackdoorOkButton')).tap();
|
||||
await yo('PsbtWithHardwareWalletBroadcastTransactionButton');
|
||||
|
||||
// TODO: same but with real signed PSBT QR for this specific transaction
|
||||
|
|
Loading…
Add table
Reference in a new issue