resolves #67 Co-authored-by: johba <johba@harb.eth> Reviewed-on: https://codeberg.org/johba/harb/pulls/70
86 lines
2.2 KiB
Markdown
86 lines
2.2 KiB
Markdown
# harb staking
|
|
|
|
This template should help get you started developing with Vue 3 in Vite.
|
|
|
|
## Recommended IDE Setup
|
|
|
|
[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur).
|
|
|
|
## Type Support for `.vue` Imports in TS
|
|
|
|
TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) to make the TypeScript language service aware of `.vue` types.
|
|
|
|
## Customize configuration
|
|
|
|
See [Vite Configuration Reference](https://vite.dev/config/).
|
|
|
|
## Project Setup
|
|
|
|
```sh
|
|
npm install
|
|
```
|
|
|
|
### Compile and Hot-Reload for Development
|
|
|
|
```sh
|
|
npm run dev
|
|
```
|
|
|
|
### Type-Check, Compile and Minify for Production
|
|
|
|
```sh
|
|
npm run build
|
|
```
|
|
|
|
## Testing
|
|
|
|
### Test Helpers
|
|
|
|
The application exposes test helpers on `window.__testHelpers` in development mode to facilitate E2E testing.
|
|
|
|
#### Available Helpers
|
|
|
|
##### `fillStakeForm(params)`
|
|
|
|
Programmatically fills the staking form without requiring fragile UI selectors.
|
|
|
|
**Parameters:**
|
|
- `amount` (number): Amount of KRK tokens to stake (must be >= minimum stake)
|
|
- `taxRateIndex` (number): Index of the tax rate option (must match one of the configured options)
|
|
|
|
**Example:**
|
|
```typescript
|
|
// In Playwright test
|
|
await page.evaluate(async () => {
|
|
await window.__testHelpers.fillStakeForm({
|
|
amount: 100,
|
|
taxRateIndex: 2,
|
|
});
|
|
});
|
|
|
|
// Then click the stake button
|
|
const stakeButton = page.getByRole('button', { name: /Stake|Snatch and Stake/i });
|
|
await stakeButton.click();
|
|
```
|
|
|
|
**Validation:**
|
|
- Throws if amount is below minimum stake
|
|
- Throws if amount exceeds wallet balance
|
|
- Throws if `taxRateIndex` does not match an available option
|
|
|
|
**TypeScript Support:**
|
|
Type declarations are available in `env.d.ts`:
|
|
```typescript
|
|
interface Window {
|
|
__testHelpers?: {
|
|
fillStakeForm: (params: { amount: number; taxRateIndex: number }) => Promise<void>;
|
|
};
|
|
}
|
|
```
|
|
|
|
**Security:**
|
|
Test helpers are only available when `import.meta.env.DEV === true` and are automatically stripped from production builds.
|
|
|
|
### E2E Tests
|
|
|
|
See `INTEGRATION_TEST_STATUS.md` in the repository root for complete testing documentation.
|