@@ -1861,6 +1861,96 @@ describe('SpeechRecognition with loosened events', () => {
18611861 ` ) ;
18621862 } ) ;
18631863
1864+ test ( 'stop after recognized 1 speech' , async ( ) => {
1865+ speechRecognition . start ( ) ;
1866+ speechRecognition . continuous = true ;
1867+ speechRecognition . interimResults = true ;
1868+
1869+ const recognizer = await constructRecognizerDeferred . promise ;
1870+
1871+ await recognizer . waitForStartContinuousRecognitionAsync ( ) ;
1872+
1873+ // This will fire "firstAudibleChunk" on "emitRead"
1874+ await recognizer . readAudioChunk ( ) ;
1875+
1876+ recognizer . audioConfig . emitEvent ( 'AudioSourceReadyEvent' ) ;
1877+
1878+ // cognitiveservices:audioSourceReady
1879+ // webspeech:start
1880+ // webspeech:audiostart
1881+
1882+ recognizer . audioConfig . emitRead ( ) ;
1883+ await soundStartEmitted ;
1884+
1885+ // cognitiveservices:firstAudibleChunk
1886+ // webspeech:soundstart
1887+
1888+ recognizer . recognizing ( this , createRecognizingEvent ( 'hello' ) ) ;
1889+
1890+ // cognitiveservices:recognizing
1891+ // webspeech:speechstart
1892+ // webspeech:result ['hello']
1893+
1894+ recognizer . recognized ( this , createRecognizedEvent ( 'Hello.' ) ) ;
1895+
1896+ // cognitiveservices:recognized
1897+ // webspeech:result ['Hello.' (isFinal)]
1898+
1899+ speechRecognition . stop ( ) ;
1900+
1901+ // cognitiveservices:stop
1902+
1903+ recognizer . speechEndDetected ( this , { } ) ;
1904+
1905+ // cognitiveservices:speechEndDetected
1906+
1907+ recognizer . recognized ( this , {
1908+ offset : 50000000 ,
1909+ result : {
1910+ duration : 0 ,
1911+ json : JSON . stringify ( {
1912+ RecognitionStatus : 5 ,
1913+ Offset : 50000000 ,
1914+ Duration : 0
1915+ } ) ,
1916+ offset : 50000000 ,
1917+ reason : 0 // NoMatch
1918+ }
1919+ } ) ;
1920+
1921+ // cognitiveservices:recognized
1922+ // webspeech:speechend
1923+ // webspeech:soundend
1924+ // webspeech:audioend
1925+ // webspeech:result ['Hello.' (isFinal)]
1926+ // webspeech:end
1927+
1928+ await endEventEmitted ;
1929+
1930+ expect ( toSnapshot ( events ) ) . toMatchInlineSnapshot ( `
1931+ [
1932+ "cognitiveservices:audioSourceReady",
1933+ "webspeech:start",
1934+ "webspeech:audiostart",
1935+ "cognitiveservices:firstAudibleChunk",
1936+ "webspeech:soundstart",
1937+ "cognitiveservices:recognizing",
1938+ "webspeech:speechstart",
1939+ "webspeech:result ['hello']",
1940+ "cognitiveservices:recognized",
1941+ "webspeech:result ['Hello.' (isFinal)]",
1942+ "cognitiveservices:stop",
1943+ "cognitiveservices:speechEndDetected",
1944+ "cognitiveservices:recognized",
1945+ "webspeech:speechend",
1946+ "webspeech:soundend",
1947+ "webspeech:audioend",
1948+ "webspeech:result ['Hello.' (isFinal)]",
1949+ "webspeech:end",
1950+ ]
1951+ ` ) ;
1952+ } ) ;
1953+
18641954 test ( 'abort after recognized' , async ( ) => {
18651955 speechRecognition . start ( ) ;
18661956 speechRecognition . continuous = true ;
0 commit comments