Files
upstream-mirror feda81bf2f
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
snapshot of https://github.com/tauri-apps/tauri.git (dev, 2026-09-23; blobs > 131072B omitted)
2026-09-23 17:00:42 +05:00

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\/)/)
})
})