puter-deploy / src /puter-js /test /txt2speech.test.js
gionuibk's picture
Upload folder using huggingface_hub
61d39e2 verified
/* eslint-disable */
// TODO: Make these more compatible with eslint
// Core test functions for txt2speech functionality
const testTxt2SpeechBasicCore = async function() {
// Test basic text-to-speech with simple text
const result = await puter.ai.txt2speech("Hello, this is a test message.");
// Check that result is an Audio object
assert(result instanceof Audio, "txt2speech should return an Audio object");
assert(result !== null, "txt2speech should not return null");
// Check that Audio object has proper methods
assert(typeof result.play === 'function', "result should have play method");
assert(typeof result.pause === 'function', "result should have pause method");
assert(typeof result.toString === 'function', "result should have toString method");
assert(typeof result.valueOf === 'function', "result should have valueOf method");
// Get the actual values to debug
const toStringValue = result.toString();
const valueOfValue = result.valueOf();
const srcValue = result.src;
// Check that toString() and valueOf() return strings
assert(typeof toStringValue === 'string', `toString() should return a string, got: ${typeof toStringValue} with value: ${toStringValue}`);
assert(typeof valueOfValue === 'string', `valueOf() should return a string, got: ${typeof valueOfValue} with value: ${valueOfValue}`);
// Check that the URL is valid (could be blob: or data: or http:)
assert(toStringValue.length > 0, "toString() should not return empty string");
assert(valueOfValue.length > 0, "valueOf() should not return empty string");
// Check that it's a valid URL format (blob:, data:, http:, or https:)
const isValidUrl = toStringValue.startsWith('blob:') ||
toStringValue.startsWith('data:') ||
toStringValue.startsWith('http:') ||
toStringValue.startsWith('https:');
assert(isValidUrl, `toString() should return a valid URL, got: ${toStringValue}`);
// Check that src is set and is a valid URL
assert(typeof srcValue === 'string', "result should have src property as string");
assert(srcValue.length > 0, "src should not be empty");
// Verify toString() and valueOf() return the same value as src
assert(toStringValue === srcValue, `toString() should return the same as src. toString(): ${toStringValue}, src: ${srcValue}`);
assert(valueOfValue === srcValue, `valueOf() should return the same as src. valueOf(): ${valueOfValue}, src: ${srcValue}`);
};
const testTxt2SpeechWithParametersCore = async function() {
// Test text-to-speech with language and voice parameters
const result = await puter.ai.txt2speech("Hello, this is a test with parameters.", "en-US", "Brian");
// Check that result is an Audio object
assert(result instanceof Audio, "txt2speech should return an Audio object");
assert(result !== null, "txt2speech should not return null");
// Check that Audio object has proper methods
assert(typeof result.play === 'function', "result should have play method");
assert(typeof result.pause === 'function', "result should have pause method");
assert(typeof result.toString === 'function', "result should have toString method");
assert(typeof result.valueOf === 'function', "result should have valueOf method");
// Get the actual values to debug
const toStringValue = result.toString();
const valueOfValue = result.valueOf();
const srcValue = result.src;
// Check that toString() and valueOf() return strings
assert(typeof toStringValue === 'string', `toString() should return a string, got: ${typeof toStringValue} with value: ${toStringValue}`);
assert(typeof valueOfValue === 'string', `valueOf() should return a string, got: ${typeof valueOfValue} with value: ${valueOfValue}`);
// Check that the URL is valid (could be blob: or data: or http:)
assert(toStringValue.length > 0, "toString() should not return empty string");
assert(valueOfValue.length > 0, "valueOf() should not return empty string");
// Check that it's a valid URL format
const isValidUrl = toStringValue.startsWith('blob:') ||
toStringValue.startsWith('data:') ||
toStringValue.startsWith('http:') ||
toStringValue.startsWith('https:');
assert(isValidUrl, `toString() should return a valid URL, got: ${toStringValue}`);
// Check that src is set and is a valid URL
assert(typeof srcValue === 'string', "result should have src property as string");
assert(srcValue.length > 0, "src should not be empty");
// Verify toString() and valueOf() return the same value as src
assert(toStringValue === srcValue, `toString() should return the same as src. toString(): ${toStringValue}, src: ${srcValue}`);
assert(valueOfValue === srcValue, `valueOf() should return the same as src. valueOf(): ${valueOfValue}, src: ${srcValue}`);
// Verify that different parameters produce different audio (comparing with basic call)
const basicResult = await puter.ai.txt2speech("Hello, this is a test with parameters.");
assert(result.src !== basicResult.src, "different parameters should produce different audio URLs");
};
const testTxt2SpeechWithTestModeCore = async function() {
// Test text-to-speech with testMode enabled
const result = await puter.ai.txt2speech("Hello, this is a test message.", "en-US", true);
// Check that result is an Audio object (same structure in test mode)
assert(result instanceof Audio, "txt2speech should return an Audio object in test mode");
assert(result !== null, "txt2speech should not return null in test mode");
// Check that Audio object has proper methods
assert(typeof result.play === 'function', "result should have play method in test mode");
assert(typeof result.pause === 'function', "result should have pause method in test mode");
assert(typeof result.toString === 'function', "result should have toString method in test mode");
assert(typeof result.valueOf === 'function', "result should have valueOf method in test mode");
// Get the actual values to debug
const toStringValue = result.toString();
const valueOfValue = result.valueOf();
const srcValue = result.src;
// Check that toString() and valueOf() return strings
assert(typeof toStringValue === 'string', `toString() should return a string in test mode, got: ${typeof toStringValue} with value: ${toStringValue}`);
assert(typeof valueOfValue === 'string', `valueOf() should return a string in test mode, got: ${typeof valueOfValue} with value: ${valueOfValue}`);
// Check that the URL is valid (could be blob: or data: or http:)
assert(toStringValue.length > 0, "toString() should not return empty string in test mode");
assert(valueOfValue.length > 0, "valueOf() should not return empty string in test mode");
// Check that it's a valid URL format
const isValidUrl = toStringValue.startsWith('blob:') ||
toStringValue.startsWith('data:') ||
toStringValue.startsWith('http:') ||
toStringValue.startsWith('https:');
assert(isValidUrl, `toString() should return a valid URL in test mode, got: ${toStringValue}`);
// Check that src is set and is a valid URL
assert(typeof srcValue === 'string', "result should have src property as string in test mode");
assert(srcValue.length > 0, "src should not be empty in test mode");
// Verify toString() and valueOf() return the same value as src
assert(toStringValue === srcValue, `toString() should return the same as src in test mode. toString(): ${toStringValue}, src: ${srcValue}`);
assert(valueOfValue === srcValue, `valueOf() should return the same as src in test mode. valueOf(): ${valueOfValue}, src: ${srcValue}`);
};
const testTxt2SpeechWithOpenAIProviderCore = async function() {
// Test OpenAI-based text-to-speech using test mode to avoid live requests
const result = await puter.ai.txt2speech("Hello, this is an OpenAI provider test.", { provider: "openai", voice: "alloy" }, true);
assert(result instanceof Audio, "txt2speech should return an Audio object for OpenAI provider");
assert(result !== null, "txt2speech should not return null for OpenAI provider");
const toStringValue = result.toString();
const valueOfValue = result.valueOf();
const srcValue = result.src;
assert(typeof toStringValue === 'string', "toString() should return a string for OpenAI provider");
assert(typeof valueOfValue === 'string', "valueOf() should return a string for OpenAI provider");
assert(typeof srcValue === 'string', "src should be a string for OpenAI provider");
assert(toStringValue.length > 0, "toString() should not be empty for OpenAI provider");
assert(valueOfValue.length > 0, "valueOf() should not be empty for OpenAI provider");
assert(srcValue.length > 0, "src should not be empty for OpenAI provider");
assert(toStringValue === srcValue, "toString() should match src for OpenAI provider");
assert(valueOfValue === srcValue, "valueOf() should match src for OpenAI provider");
};
const testTxt2SpeechWithElevenLabsProviderCore = async function() {
// Test ElevenLabs provider in test mode to avoid external calls
const result = await puter.ai.txt2speech(
"Hello, this is an ElevenLabs provider test.",
{ provider: "elevenlabs", voice: "21m00Tcm4TlvDq8ikWAM" },
true,
);
assert(result instanceof Audio, "txt2speech should return an Audio object for ElevenLabs provider");
assert(result !== null, "txt2speech should not return null for ElevenLabs provider");
const toStringValue = result.toString();
const valueOfValue = result.valueOf();
const srcValue = result.src;
assert(typeof toStringValue === 'string', "toString() should return a string for ElevenLabs provider");
assert(typeof valueOfValue === 'string', "valueOf() should return a string for ElevenLabs provider");
assert(typeof srcValue === 'string', "src should be a string for ElevenLabs provider");
assert(toStringValue.length > 0, "toString() should not be empty for ElevenLabs provider");
assert(valueOfValue.length > 0, "valueOf() should not be empty for ElevenLabs provider");
assert(srcValue.length > 0, "src should not be empty for ElevenLabs provider");
assert(toStringValue === srcValue, "toString() should match src for ElevenLabs provider");
assert(valueOfValue === srcValue, "valueOf() should match src for ElevenLabs provider");
};
// Export test functions
window.txt2speechTests = [
{
name: "testTxt2SpeechBasic",
description: "Test basic text-to-speech functionality and verify Audio object structure",
test: async function() {
try {
await testTxt2SpeechBasicCore();
pass("testTxt2SpeechBasic passed");
} catch (error) {
fail("testTxt2SpeechBasic failed:", error);
}
}
},
{
name: "testTxt2SpeechWithParameters",
description: "Test text-to-speech with language and voice parameters (en-US, Brian)",
test: async function() {
try {
await testTxt2SpeechWithParametersCore();
pass("testTxt2SpeechWithParameters passed");
} catch (error) {
fail("testTxt2SpeechWithParameters failed:", error);
}
}
},
{
name: "testTxt2SpeechWithTestMode",
description: "Test text-to-speech with testMode enabled to verify test functionality",
test: async function() {
try {
await testTxt2SpeechWithTestModeCore();
pass("testTxt2SpeechWithTestMode passed");
} catch (error) {
fail("testTxt2SpeechWithTestMode failed:", error);
}
}
},
{
name: "testTxt2SpeechWithOpenAIProvider",
description: "Test text-to-speech using the OpenAI provider in test mode",
test: async function() {
try {
await testTxt2SpeechWithOpenAIProviderCore();
pass("testTxt2SpeechWithOpenAIProvider passed");
} catch (error) {
fail("testTxt2SpeechWithOpenAIProvider failed:", error);
}
}
},
{
name: "testTxt2SpeechWithElevenLabsProvider",
description: "Test text-to-speech using the ElevenLabs provider in test mode",
test: async function() {
try {
await testTxt2SpeechWithElevenLabsProviderCore();
pass("testTxt2SpeechWithElevenLabsProvider passed");
} catch (error) {
fail("testTxt2SpeechWithElevenLabsProvider failed:", error);
}
}
}
];