Browse Source

Merge branch 'master' into test-playwright

Jose Olarte III 3 months ago
parent
commit
10fad9c167
  1. 11
      CHANGELOG.md
  2. 28
      README.md
  3. 4
      package-lock.json
  4. 6
      package.json
  5. 36
      src/views/ClaimView.vue
  6. 2
      src/views/GiftedDetails.vue
  7. 5
      src/views/HomeView.vue
  8. 5
      src/views/ProjectViewView.vue
  9. 2
      test-playwright/00-noid-tests.spec.ts
  10. 1
      test-playwright/40-add-contact.spec.ts

11
CHANGELOG.md

@ -6,7 +6,16 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [0.3.15] - 2024.06.22 - c8f0f2c2b16b9f0b4b47d40f7bf29058c7baa68e ## [0.3.16] - 2024.07.10
### Added
- Photos on more screens
### Fixed
- Share of a photo, including sharing a photo from webkit/Safari which never worked
### Changed in DB or environment
- Nothing (though there's a new temp field in IndexedDB)
## [0.3.15] - 2024.08.04 - c8f0f2c2b16b9f0b4b47d40f7bf29058c7baa68e
### Added ### Added
- Edit gives - Edit gives
- Page to edit claim JSON before submitting - Page to edit claim JSON before submitting

28
README.md

@ -71,10 +71,7 @@ npm run build
### Automated ### Automated
Using the global test Endorser (ledger) server: Use the locally running Endorser server:
`npx playwright test`
Using the locally running Endorser server:
* Clone and set up https://github.com/trentlarson/endorser-ch and run the following in that directory: * Clone and set up https://github.com/trentlarson/endorser-ch and run the following in that directory:
``` ```
@ -82,7 +79,23 @@ test/test.sh
NODE_ENV=test-local npm run dev NODE_ENV=test-local npm run dev
``` ```
Alternatively, you can run the following which starts with the bare minimum test data: * Now run the local tests:
```
npm run test-all
```
Note that a test will sometimes fail and rerunning may succeed (and repeat if a different test fails).
It's possible to use the global test Endorser (ledger) server (but currently the tests don't all succeed):
`npx playwright test`
It's possible to run with a minimal set of data: the following starts with the bare minimum of test data (but currently the tests don't all succeed):
``` ```
rm ../endorser-ch-test-local.sqlite3 rm ../endorser-ch-test-local.sqlite3
NODE_ENV=test-local npm run flyway migrate NODE_ENV=test-local npm run flyway migrate
@ -91,11 +104,6 @@ NODE_ENV=test-local npm run dev
``` ```
* Now run the local tests:
```
npx playwright test -c playwright.config-local.ts
```
### Register new user on test server ### Register new user on test server
On the test server, User #0 has rights to register others, so you can start On the test server, User #0 has rights to register others, so you can start

4
package-lock.json

@ -1,12 +1,12 @@
{ {
"name": "TimeSafari", "name": "TimeSafari",
"version": "0.3.16-beta", "version": "0.3.17-beta",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "TimeSafari", "name": "TimeSafari",
"version": "0.3.16-beta", "version": "0.3.17-beta",
"dependencies": { "dependencies": {
"@dicebear/collection": "^5.4.1", "@dicebear/collection": "^5.4.1",
"@dicebear/core": "^5.4.1", "@dicebear/core": "^5.4.1",

6
package.json

@ -1,13 +1,15 @@
{ {
"name": "TimeSafari", "name": "TimeSafari",
"version": "0.3.16-beta", "version": "0.3.17-beta",
"scripts": { "scripts": {
"dev": "vite", "dev": "vite",
"serve": "vite preview", "serve": "vite preview",
"build": "VITE_GIT_HASH=`git log -1 --pretty=format:%h` vite build", "build": "VITE_GIT_HASH=`git log -1 --pretty=format:%h` vite build",
"lint": "eslint --ext .js,.ts,.vue --ignore-path .gitignore src", "lint": "eslint --ext .js,.ts,.vue --ignore-path .gitignore src",
"lint-fix": "eslint --ext .js,.ts,.vue --ignore-path .gitignore --fix src", "lint-fix": "eslint --ext .js,.ts,.vue --ignore-path .gitignore --fix src",
"prebuild": "eslint --ext .js,.ts,.vue --ignore-path .gitignore src && node sw_combine.js" "prebuild": "eslint --ext .js,.ts,.vue --ignore-path .gitignore src && node sw_combine.js",
"test-local": "npx playwright test -c playwright.config-local.ts --trace on",
"test-all": "npm run build && npx playwright test -c playwright.config-local.ts --trace on"
}, },
"dependencies": { "dependencies": {
"@dicebear/collection": "^5.4.1", "@dicebear/collection": "^5.4.1",

36
src/views/ClaimView.vue

@ -75,6 +75,11 @@
<fa icon="calendar" class="fa-fw text-slate-400" /> <fa icon="calendar" class="fa-fw text-slate-400" />
{{ veriClaim.issuedAt?.replace(/T/, " ").replace(/Z/, " UTC") }} {{ veriClaim.issuedAt?.replace(/T/, " ").replace(/Z/, " UTC") }}
</div> </div>
<div v-if="veriClaim.claim.image" class="flex justify-center">
<a :href="veriClaim.claim.image" target="_blank">
<img :src="veriClaim.claim.image" class="h-24 rounded-xl" />
</a>
</div>
<!-- Fullfills Links --> <!-- Fullfills Links -->
@ -131,9 +136,21 @@
</div> </div>
</div> </div>
<div class="mt-8">
<button
v-if="libsUtil.canFulfillOffer(veriClaim)"
@click="openFulfillGiftDialog()"
class="col-span-1 block w-fit text-center text-md bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-2 rounded-md"
>
Affirm Delivery
<fa icon="hand-holding-heart" class="ml-2 text-white cursor-pointer" />
</button>
</div>
<div v-if="libsUtil.isGiveAction(veriClaim)">
<div class="flex columns-3"> <div class="flex columns-3">
<button <button
class="col-span-1 bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-4 py-2 rounded-md" class="col-span-1 bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white mt-2 px-4 py-2 rounded-md"
v-if=" v-if="
libsUtil.isGiveRecordTheUserCanConfirm( libsUtil.isGiveRecordTheUserCanConfirm(
isRegistered, isRegistered,
@ -147,31 +164,20 @@
Confirm Confirm
<fa icon="circle-check" class="ml-2 text-white cursor-pointer" /> <fa icon="circle-check" class="ml-2 text-white cursor-pointer" />
</button> </button>
<h2 v-else class="font-bold uppercase text-xl mt-2">Confirmations</h2>
<span class="px-4 py-2"> <span class="mt-0.5 px-4 py-2">
<router-link <router-link
v-if="libsUtil.isGiveAction(veriClaim)" v-if="libsUtil.isGiveAction(veriClaim)"
:to="'/confirm-gift/' + encodeURIComponent(veriClaim.id)" :to="'/confirm-gift/' + encodeURIComponent(veriClaim.id)"
class="col-span-1 text-blue-500" class="col-span-1 text-blue-500"
> >
Confirmation Details... Details...
</router-link> </router-link>
</span> </span>
<button
v-if="libsUtil.canFulfillOffer(veriClaim)"
@click="openFulfillGiftDialog()"
class="col-span-1 block w-fit text-center text-md bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-2 rounded-md"
>
Affirm Delivery
<fa icon="hand-holding-heart" class="ml-2 text-white cursor-pointer" />
</button>
</div> </div>
<GiftedDialog ref="customGiveDialog" /> <GiftedDialog ref="customGiveDialog" />
<div v-if="libsUtil.isGiveAction(veriClaim)">
<h2 class="font-bold uppercase text-xl mt-8 mb-2">Confirmations</h2>
<span v-if="totalConfirmers() === 0">Nobody has confirmed this.</span> <span v-if="totalConfirmers() === 0">Nobody has confirmed this.</span>
<span v-else-if="totalConfirmers() === 1"> <span v-else-if="totalConfirmers() === 1">
One person has confirmed this. One person has confirmed this.

2
src/views/GiftedDetails.vue

@ -66,7 +66,7 @@
<div class="flex justify-center mt-4" data-testid="imagery"> <div class="flex justify-center mt-4" data-testid="imagery">
<span v-if="imageUrl" class="flex justify-between"> <span v-if="imageUrl" class="flex justify-between">
<a :href="imageUrl" target="_blank" class="text-blue-500 ml-4"> <a :href="imageUrl" target="_blank">
<img :src="imageUrl" class="h-24 rounded-xl" /> <img :src="imageUrl" class="h-24 rounded-xl" />
</a> </a>
<fa <fa

5
src/views/HomeView.vue

@ -277,10 +277,7 @@
</router-link> </router-link>
</span> </span>
</div> </div>
<div <div v-if="record.image" class="flex justify-center">
v-if="record.image"
class="flex justify-center"
>
<a :href="record.image" target="_blank"> <a :href="record.image" target="_blank">
<img :src="record.image" class="h-24 mt-2 rounded-xl" /> <img :src="record.image" class="h-24 mt-2 rounded-xl" />
</a> </a>

5
src/views/ProjectViewView.vue

@ -345,6 +345,11 @@
<fa icon="circle-check" class="text-blue-500 cursor-pointer" /> <fa icon="circle-check" class="text-blue-500 cursor-pointer" />
</a> </a>
</div> </div>
<div v-if="give.fullClaim.image" class="flex justify-center">
<a :href="give.fullClaim.image" target="_blank">
<img :src="give.fullClaim.image" class="h-24 mt-2 rounded-xl" />
</a>
</div>
</li> </li>
</ul> </ul>
<div v-if="givesHitLimit" class="text-center text-blue-500"> <div v-if="givesHitLimit" class="text-center text-blue-500">

2
test-playwright/00-noid-tests.spec.ts

@ -1,6 +1,6 @@
import { test, expect } from '@playwright/test'; import { test, expect } from '@playwright/test';
test('Confirm usage of test API', async ({ page }, testInfo) => { test('Confirm usage of test API (may fail if you are running your own Time Safari)', async ({ page }, testInfo) => {
// Load account view // Load account view
await page.goto('./account'); await page.goto('./account');
await page.getByRole('heading', { name: 'Advanced' }).click(); await page.getByRole('heading', { name: 'Advanced' }).click();

1
test-playwright/40-add-contact.spec.ts

@ -81,6 +81,5 @@ test('Add contact, record gift, confirm gift', async ({ page }) => {
// Refresh claim page, Confirm button should be hidden // Refresh claim page, Confirm button should be hidden
await page.reload(); await page.reload();
await expect(page.getByRole('button', { name: 'Confirm' })).toBeVisible();
await expect(page.getByRole('button', { name: 'Confirm' })).toBeHidden(); await expect(page.getByRole('button', { name: 'Confirm' })).toBeHidden();
}); });
Loading…
Cancel
Save