Files
sousa-gecko/testing/web-platform/tests/ai/language-model/language-model-availability.tentative.https.window.js
T
Mike Wasserman f7175e3f7e Bug 1997482 [wpt PR 55781] - Prompt API: Move WPTs to web_tests/external/wpt/ai/language-model, a=testonly
Automatic update from web-platform-tests
Prompt API: Move WPTs to web_tests/external/wpt/ai/language-model

Basic initial export of internal tests; future refinements planned.
Reuse shared utils; cleanup LanguageModel utils and individual tests.
Use external image and media files, delete internal ones.

Bug: 452743283
Change-Id: I01757bf1e50c3c5c865f43ca5ee4cf5f7f9d920d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6648569
Commit-Queue: Mike Wasserman <msw@chromium.org>
Reviewed-by: Nathan Memmott <memmott@chromium.org>
Reviewed-by: Mike Wasserman <msw@chromium.org>
Auto-Submit: Mike Wasserman <msw@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1538290}

--

wpt-commits: 3b6950649d63d2eb5fa402bc618ef4e3a5d663a5
wpt-pr: 55781
2025-11-10 09:56:47 +00:00

52 lines
2.2 KiB
JavaScript

// META: title=Language Model Availability
// META: script=/resources/testdriver.js
// META: script=../resources/util.js
// META: timeout=long
'use strict';
// These tests have no availability requirements, they only test the API shape.
promise_test(async () => {
assert_true(!!LanguageModel);
assert_equals(typeof LanguageModel.availability, 'function');
}, 'LanguageModel.availability() is defined');
promise_test(async () => {
const availability = await LanguageModel.availability();
assert_in_array(availability, kValidAvailabilities);
}, 'LanguageModel.availability() returns a valid value with no options');
promise_test(async (t) => {
return promise_rejects_js(t, RangeError, LanguageModel.availability({
expectedInputs: [{type: 'text', languages: ['en-abc-invalid']}]
}));
}, 'LanguageModel.availability() rejects when given invalid language tags');
promise_test(async () => {
// An array of plausible test option values.
const kCreateOptionsSpec = [
{topK: [undefined, -2, 0, 1, 1.5, 3, 99]}, // Nominally int 1-10+.
{temperature: [undefined, -0.5, 0, 0.6, 1, 7]}, // Nominally float 0-1.
{expectedInputs: [undefined, [], [{type: 'text'}],
[{type: 'text'}, {type: 'audio'}, {type: 'image'}],
[{type: 'text', languages: ['en', 'ja', 'ko']}],
[{type: 'audio', languages: ['es']}, {type: 'image', languages: ['fr']}],
]},
{expectedOutputs: [undefined, [], [{type: 'text'}],
[{type: 'text'}, {type: 'audio'}, {type: 'image'}],
[{type: 'text', languages: ['en', 'ja', 'ko']}],
[{type: 'audio', languages: ['es']}, {type: 'image', languages: ['fr']}],
]},
{initialPrompts: [undefined, [], [{role: 'system', content: 'have fun'}],
[{role: 'system', content: 'have fun'}, {role: 'user', content: 'be good'}],
[{role: 'system', content: 'be good'}, {role: 'system', content: 'be bad'}],
[{role: 'system', content: 'have fun'}, {role: 'system', content: 'be bad'}],
]},
];
for (const options of generateOptionCombinations(kCreateOptionsSpec)) {
const availability = await LanguageModel.availability(options);
assert_in_array(availability, kValidAvailabilities, JSON.stringify(options));
}
}, 'LanguageModel.availability() returns a valid value with plausible options');