Some checks failed
Audit / audit-js (push) Failing after 0s
bench / bench (map[os:ubuntu-latest runner:xvfb-run --auto-servernum target:x86_64-unknown-linux-gnu], nightly) (push) Failing after 0s
covector version or publish / run-integration-tests (ubuntu-latest) (push) Failing after 0s
Audit / audit-rust (push) Failing after 0s
test `@tauri-apps/cli` / test (ubuntu-latest) (push) Failing after 0s
test `tauri-cli` / test (map[os:ubuntu-latest target:x86_64-unknown-linux-gnu]) (push) Failing after 0s
test core / test (map[args:--all-features key:all], map[cargo:cargo command:test os:ubuntu-latest target:x86_64-unknown-linux-gnu toolchain:1.90]) (push) Failing after 0s
test core / test (map[args:--no-default-features key:no-default], map[cargo:cargo command:test os:ubuntu-latest target:x86_64-unknown-linux-gnu toolchain:1.90]) (push) Failing after 0s
test core / test (map[args:--no-default-features key:no-default], map[cargo:cross command:build os:ubuntu-latest target:aarch64-linux-android toolchain:1.90]) (push) Failing after 0s
deploy schema worker / deploy (push) Failing after 0s
lint rust / clippy (map[cargo:cargo include: os:ubuntu-latest target:x86_64-unknown-linux-gnu]) (push) Failing after 0s
lint rust / clippy (map[cargo:cross include:--package api os:ubuntu-latest target:aarch64-linux-android]) (push) Failing after 0s
supply chain health status / check rust dependencies with cargo vet (push) Failing after 0s
test `@tauri-apps/api` e2e (mobile) / android (push) Failing after 0s
test `@tauri-apps/api` e2e / test (map[name:Linux os:ubuntu-latest]) (push) Failing after 0s
test core / test (map[args:--all-features key:all], map[cargo:cross command:build os:ubuntu-latest target:aarch64-linux-android toolchain:1.90]) (push) Failing after 0s
Udeps / changes (push) Failing after 0s
Udeps / setup (push) Has been skipped
Udeps / udeps (push) Has been skipped
bench / bench (map[os:macos-latest runner: target:aarch64-apple-darwin], nightly) (push) Has been cancelled
bench / bench (map[os:windows-latest runner: target:x86_64-pc-windows-msvc], nightly) (push) Has been cancelled
covector version or publish / run-integration-tests (macos-latest) (push) Has been cancelled
covector version or publish / run-integration-tests (windows-latest) (push) Has been cancelled
covector version or publish / version-or-publish (push) Has been cancelled
test `@tauri-apps/cli` / test (macos-latest) (push) Has been cancelled
test `tauri-cli` / test (map[args:--no-default-features --features native-tls-vendored os:windows-latest restore-only:true target:aarch64-pc-windows-msvc]) (push) Has been cancelled
test `tauri-cli` / test (map[os:macos-latest target:x86_64-apple-darwin]) (push) Has been cancelled
test `tauri-cli` / test (map[os:windows-latest target:x86_64-pc-windows-msvc]) (push) Has been cancelled
test core / test (map[args:--all-features key:all], map[cargo:cargo command:build os:macos-latest target:aarch64-apple-ios toolchain:1.90]) (push) Has been cancelled
test core / test (map[args:--all-features key:all], map[cargo:cargo command:test os:macos-14 target:aarch64-apple-darwin toolchain:1.90]) (push) Has been cancelled
lint rust / clippy (map[cargo:cargo include: os:macos-latest target:aarch64-apple-darwin]) (push) Has been cancelled
lint rust / clippy (map[cargo:cargo include: os:windows-latest target:x86_64-pc-windows-msvc]) (push) Has been cancelled
lint rust / clippy (map[cargo:cargo include:--package api os:macos-latest target:aarch64-apple-ios]) (push) Has been cancelled
test `@tauri-apps/api` e2e (mobile) / ios (push) Has been cancelled
test `@tauri-apps/api` e2e / test (map[name:Windows os:windows-latest]) (push) Has been cancelled
test `@tauri-apps/api` e2e / test (map[name:macOS os:macos-latest]) (push) Has been cancelled
test `@tauri-apps/cli` / test (windows-latest) (push) Has been cancelled
test core / test (map[args:--all-features key:all], map[cargo:cargo command:test os:windows-latest target:x86_64-pc-windows-msvc toolchain:1.90]) (push) Has been cancelled
test core / test (map[args:--no-default-features key:no-default], map[cargo:cargo command:build os:macos-latest target:aarch64-apple-ios toolchain:1.90]) (push) Has been cancelled
test core / test (map[args:--no-default-features key:no-default], map[cargo:cargo command:test os:macos-14 target:aarch64-apple-darwin toolchain:1.90]) (push) Has been cancelled
test core / test (map[args:--no-default-features key:no-default], map[cargo:cargo command:test os:windows-latest target:x86_64-pc-windows-msvc toolchain:1.90]) (push) Has been cancelled
110 lines
3.6 KiB
TypeScript
110 lines
3.6 KiB
TypeScript
// Copyright 2019-2024 Tauri Programme within The Commons Conservancy
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
import { expect } from '@wdio/globals'
|
|
import { tauri, tauriError, describeApi, itOn } from '../helpers/index.js'
|
|
|
|
describeApi('core', () => {
|
|
it('isTauri reports true inside the app', async () => {
|
|
expect(await tauri((api) => api.core.isTauri())).toBe(true)
|
|
})
|
|
|
|
it('invoke round-trips a raw request through the echo command', async () => {
|
|
const echoed = await tauri((api) =>
|
|
api.core.invoke('echo', { some: 'payload', n: 42 })
|
|
)
|
|
expect(echoed).toEqual({ some: 'payload', n: 42 })
|
|
})
|
|
|
|
it('invoke rejects for a command that is not registered', async () => {
|
|
// `removeUnusedCommands` strips ungranted commands from the app entirely.
|
|
const message = await tauriError((api) =>
|
|
api.core.invoke('this_command_does_not_exist')
|
|
)
|
|
expect(message).toMatch(/not found|not allowed|denied/i)
|
|
})
|
|
|
|
it('command scopes gate log_operation by event', async () => {
|
|
// The run-app capability scopes `log_operation` to the `tauri-click` event.
|
|
await tauri((api) =>
|
|
api.core.invoke('log_operation', {
|
|
event: 'tauri-click',
|
|
payload: 'from e2e'
|
|
})
|
|
)
|
|
const message = await tauriError((api) =>
|
|
api.core.invoke('log_operation', { event: 'out-of-scope-event' })
|
|
)
|
|
expect(message).toMatch(/not allowed|denied/i)
|
|
})
|
|
|
|
it('Channel receives every message streamed from the backend in order', async () => {
|
|
// `spam` sends 1..=1000 over the channel.
|
|
const result = await tauri(
|
|
(api, count) =>
|
|
new Promise<{ length: number; ordered: boolean; last: number }>(
|
|
(resolve, reject) => {
|
|
const received: number[] = []
|
|
const channel = new api.core.Channel<number>()
|
|
channel.onmessage = (value: number) => {
|
|
received.push(value)
|
|
if (received.length === count) {
|
|
let ordered = true
|
|
for (let i = 0; i < received.length; i++) {
|
|
if (received[i] !== i + 1) {
|
|
ordered = false
|
|
break
|
|
}
|
|
}
|
|
resolve({
|
|
length: received.length,
|
|
ordered,
|
|
last: received[received.length - 1]
|
|
})
|
|
}
|
|
}
|
|
api.core.invoke('spam', { channel }).catch(reject)
|
|
setTimeout(
|
|
() =>
|
|
reject(
|
|
new Error(
|
|
`only received ${received.length} of ${count} messages`
|
|
)
|
|
),
|
|
15000
|
|
)
|
|
}
|
|
),
|
|
1000
|
|
)
|
|
expect(result.length).toBe(1000)
|
|
expect(result.ordered).toBe(true)
|
|
expect(result.last).toBe(1000)
|
|
})
|
|
|
|
itOn(
|
|
['android', 'ios'],
|
|
'a mobile plugin resolves JSArray and JSObject values as JSON arrays and objects',
|
|
async () => {
|
|
// On Android, the sample plugin's `jsValues` goes through
|
|
// `Invoke.resolveObject`, i.e. the plugin JSON mapper rather than
|
|
// org.json's own `toString`.
|
|
const values = await tauri((api) =>
|
|
api.core.invoke('plugin:sample|js_values')
|
|
)
|
|
expect(values).toEqual({
|
|
array: ['a', 1, true],
|
|
obj: { kind: 'object', nested: [1, 2] }
|
|
})
|
|
}
|
|
)
|
|
|
|
it('convertFileSrc builds a platform-appropriate asset URL', async () => {
|
|
const url = await tauri((api) =>
|
|
api.core.convertFileSrc('/path/to/file.png')
|
|
)
|
|
expect(url).toMatch(/(asset:\/\/localhost\/|https?:\/\/asset\.localhost\/)/)
|
|
})
|
|
})
|