summaryrefslogtreecommitdiff
path: root/README
blob: 67c41d34885e477461be1e4017d6deb51ab77a7d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
# GNU Taler Wallet

This repository contains the implementation of a wallet for GNU Taler written
in TypeScript.

## Dependencies

The following dependencies are required to build the wallet:

- python>=3.8
- nodejs>=12
- jq
- npm
- pnpm
- zip

## Installation

The CLI version of the wallet supports the normal GNU installation process.

```shell
./configure [ --prefix=$PREFIX ] && make install
```

### Compiling from Git

If you are compiling the code from git, you have to run `./bootstrap` before
running `./configure`.

### Building the WebExtension

The WebExtension can be built via the 'webextension' make target:

```shell
./configure && make webextension
```

This will create the zip file with the WebExtension in the directory

```
packages/taler-wallet-webextension/extension/
```

We also provide a `Dockerfile` for a container that can build the
WebExtension. After you install docker, make sure the user is in group
`docker` and (re-)start the docker daemon:

```shell
# Make sure there is a docker group.
$ grep docker: /etc/group
$ sudo groupadd docker

# Make sure USER is defined and is in the docker group.
$ echo $USER
$ sudo usermod -aG docker $USER

# Restart the docker daemon.
# (This command is OS-specific.)

# Obtain a new shell.  Make sure it includes the `docker` group.
$ newgrp docker
$ id
```

Then, you can proceed with these instructions:

```shell
# Download wallet source code and unpack it
(host)$ tar -xf wallet-core-$version.tar.gz

# Build the image
(host)$ docker build --tag walletbuilder wallet-core-$version/contrib/wallet-docker

# Start the container
(host)$ docker run -dti --name walletcontainer walletbuilder /bin/bash

# Copy wallet source to container
(host)$ docker cp ./wallet-core-$version/ walletcontainer:/

# Attach to container
(host)$ docker attach walletcontainer

# Run build inside container
(container)$ cd wallet-core-$version
(container)$ ./configure && make webextension
(container)$ exit

# Copy build artefact(s) to host
(host)$ docker cp walletcontainer:/wallet-core-$version/packages/taler-wallet-webextension/extension extension
```

### Reviewing WebExtension UI examples

The WebExtension can be tested using example stories.
To run a live server use the 'dev-view' target

```shell
make webextension-dev-view
```

Stories are defined with a \*.stories.tsx file [1], you are free to create new or edit
some and commit them in order to create a more complete set of examples.

[1] look for them at packages/taler-wallet-webextension/src/\*_/_.stories.tsx

### WebExtension UI Components

Every group of component have a directory and a README.
Testing component is based in two main category:

- UI testing
- State transition testing

For UI testing, every story example will be taken as a unit test.
For State testing, every stateful component should have an `useStateComponent` function that will be tested in a \*.test.ts file.

### Testing WebExtension

After building the WebExtension look for the folder `extension`
Inside you will find v2 and v3 version referring to the manifest version being used.

Firefox users:

- Go to about:addons
- Then `debug addon` (or about:debugging#/runtime/this-firefox)
- Then `Load temporary addon...`
- Select the `taler-wallet-webextension-*.zip`

Chrome users:

- Settings -> More tools -> Extensions (or go to chrome://extensions/)
- `Load unpacked` button in the upper left
- Selected the `unpacked` folder in v2 or v3

# Integration Tests

This repository comes with integration tests for GNU Taler. To run them,
install the wallet first. Then use the test runner from the
taler-integrationtests package:

```shell
cd packages/taler-integrationtests/
./testrunner '*'
```

The test runner accepts a bash glob pattern as parameter. Individual tests can
be run by specifying their name.

To check coverage, use nyc from the root of the repository and make sure that the taler-wallet-cli
from the source tree is executed, and not the globally installed one:

```
PATH="$PWD/packages/taler-wallet-cli/bin:$PATH" \
  nyc ./packages/taler-integrationtests/testrunner '*'
```