Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

4.7.1 Release checklist #2728

Closed
65 of 73 tasks
corinagum opened this issue Dec 13, 2019 · 0 comments
Closed
65 of 73 tasks

4.7.1 Release checklist #2728

corinagum opened this issue Dec 13, 2019 · 0 comments

Comments

@corinagum
Copy link
Contributor

Build

  1. Bump to Bot Framework SDK release 4.7 RC4
  2. Update all samples to use 4.7.0
    • Moved to post-release checklist
  3. Update CHANGELOG.md to mark specific changes in 4.7.1
  4. Run npm version --no-git-tag-version 4.7.1
    1. Merge into master, the PR number is #
    2. Do not merge any other unrelated changes after this PR. Any other PR merged, will need to be re-tested
  5. Run daily pipeline manually, set "generate release version number" to true
    • (This will not push to NPM or CDN)
    • The build number is 95108 and commit is b8f1639
    • The build number is 95227 and commit is 7d7a172ddda7df9d5a76dc45152eb198b07ee8a1
      • Issue: Minimal bundle fail because it was not expect renderMarkdown to be falsy
    • The build number is 95527 and commit is 781109312be8c614ad16bd8f954ccf1b50dfcd62
    • Patch for Emulator (corejs dependency change)
  6. Download build artifacts
  7. Setup hosting apps
    1. Hosting apps
      • create-react-app
      • babel/standalone
      • renderWebChat with React loaded
        • ES5 bundle (on IE11 and all browsers)
        • Full bundle without ES5
        • Minimal bundle
        • ES5 bundle with Direct Line Speech (on IE11 and all browsers)
      • renderWebChat without React loaded
    2. For each of the hosting scenario, verify
      • Web Chat is loaded
      • User can send a simple message
        • Bot will respond with a simple response
      • User can say a simple message using microphone
        • Bot will respond with a synthesized message
      • Bot can display an Adaptive Card (e.g. card breakfast)
        • (Don't use herocard because it is not using the middleware to register AC renderer)
      • Bot can send Markdown and displayed correctly
        • Type markdown
      • Check <meta> to see the version number should be 4.7.0 and not a pre-release
        • [].map.call(document.querySelectorAll('head meta[name^="bot"]'), function (meta) { return [meta.name, meta.content].join('='); });

Test

The test should run against the build artifacts from Azure Pipelines.

  1. Manual testing on major browsers
    1. All MockBot commands
      • On each of the following browsers:
        • Chrome
        • Edge (UWP)
        • Firefox
        • IE11
        • Macbook Safari
        • iOS Safari
        • Android Chrome
      1. Type help to MockBot, it will list out all commands
      2. Try out each of the command, list out all failed below, if any
    2. Speech scenarios
      • On each of the following browsers:
        • Chrome
        • Edge (UWP)
        • Firefox
        • Macbook Safari
        • iOS Safari
        • Android Chrome
      1. Happy path
        1. Click microphone button and say something
        2. Expect: bot to speak
        3. Expect: microphone to turn on automatically after bot message is spoken
      2. Turning off microphone
        1. Click microphone button and say something
        2. Expect: while your speech is getting recognized, the microphone button should turn red
        3. Expect: while the microphone button is red, you can click to stop it
        4. Expect: your speech interims should not be sent
      3. Keyboard interruption on speech synthesis
        1. Click microphone button and say something
        2. While the bot is speaking, type something on the keyboard
        3. Expect: bot stop speaking immediately and microphone will not turn on by itself
      4. Unrecognizable sound (or muted microphone)
        1. Click microphone button and do not say anything
        2. Expect: after a few seconds, the microphone button should be switched off by itself
      5. Recognition behavior after synthesis of "input hint expected"
        1. On all browsers including Safari, it should open microphone again and start recognizing
        2. Click on the microphone button should interrupt the synthesis
        3. Type on the keyboard should interrupt the synthesis
      6. Proactive message should be synthesized
        1. Say "proactive"
        2. Wait until both first and proactive message arrive, do not type on the keyboard in the meanwhile
        3. Expect: both the first and proactive message should be synthesized.
      7. Direct Line Speech: Simple speech recognition and synthesis
        1. Say "What's the weather?"
        2. Expect: bot should say, "here is the forecast of this week."
    3. (IE11) Direct Line Speech
      1. Web Chat should work over Direct Line Speech channel, without microphone button
    4. (Any) Connectivity scenarios
      1. Airplane mode
      2. Bad secret or token
  2. Test specific fixes related to 4.7.0 and previous releases

Release

  1. Make sure you are on master or qfe branch, run git status to check
  2. git pull
  3. git tag v4.7.0
  4. git push -u upstream v4.7.0
    • You do not need to kick off a build again, use the previous build
  5. Create a new GitHub release, copy entries from CHANGELOG.md
    • Subresource Integrity can be generated by curl https://cdn.botframework.com/botframework-webchat/4.7.0/webchat.js | openssl dgst -sha384 -binary | openssl base64 -A
    • Attach assets including 3 JS files and 3 tarballs
      • JS bundle download from build artifacts
      • Tarballs download from npmjs
        • curl -L -o botframework-directlinespeech-sdk-4.7.0.tgz https://registry.npmjs.org/botframework-directlinespeech-sdk/-/botframework-directlinespeech-sdk-4.7.0.tgz
        • curl -L -o botframework-webchat-4.7.0.tgz https://registry.npmjs.org/botframework-webchat/-/botframework-webchat-4.7.0.tgz
        • curl -L -o botframework-webchat-core-4.7.0.tgz https://registry.npmjs.org/botframework-webchat-core/-/botframework-webchat-core-4.7.0.tgz
        • curl -L -o botframework-webchat-component-4.7.0.tgz https://registry.npmjs.org/botframework-webchat-component/-/botframework-webchat-component-4.7.0.tgz
  6. Kick off release to NPM
  7. Kick off release to CDN
    • Script build number is 57881
    1. Send reminder email to approvers
  8. Update servicingPlan.json

Post-release check

  • Hosting apps
    • NPM
      • create-react-app using package from public NPM
        • npm uninstall botframework-webchat-* (remove all tarballs)
        • npm install botframework-webchat@4.7.0 (just install the bundle package)
    • Bundle
      • Using <script> tags from https://github.com/microsoft/BotFramework-WebChat/releases/tag/v4.7.0, with subresource integrity
      • babel/standalone using package from CDN
      • renderWebChat with React loaded using package from CDN
        • ES5 bundle (on IE11 and all browsers)
        • Full bundle without ES5
        • Minimal bundle
      • renderWebChat without React loaded using package from CDN

Notification to interesting parties

Changelog

Breaking changes

  • adaptiveCardHostConfig is being renamed to adaptiveCardsHostConfig
    • If you are using the deprecated adaptiveCardHostConfig, we will rename it automatically

Added

  • Resolves #2539, added React hooks for customization, by @compulim, in the following PRs:
    • PR #2540: useActivities, useReferenceGrammarID, useSendBoxShowInterims
    • PR #2541: useStyleOptions, useStyleSet
    • PR #2542: useLanguage, useLocalize, useLocalizeDate
    • PR #2543: useAdaptiveCardsHostConfig, useAdaptiveCardsPackage, useRenderMarkdownAsHTML
    • PR #2544: useAvatarForBot, useAvatarForUser
    • PR #2547: useEmitTypingIndicator, usePeformCardAction, usePostActivity, useSendEvent, useSendFiles, useSendMessage, useSendMessageBack, useSendPostBack
    • PR #2548: useDisabled
    • PR #2549: useSuggestedActions
    • PR #2550: useConnectivityStatus, useGroupTimestamp, useTimeoutForSend, useUserID, useUsername
    • PR #2551: useLastTypingAt, useSendTypingIndicator, useTypingIndicator
    • PR #2552: useFocusSendBox, useScrollToEnd, useSendBoxValue, useSubmitSendBox, useTextBoxSubmit, useTextBoxValue
    • PR #2553: useDictateInterims, useDictateState, useGrammars, useMarkActivityAsSpoken, useMicrophoneButton, useShouldSpeakIncomingActivity, useStartDictate, useStopDictate, useVoiceSelector, useWebSpeechPonyfill
    • PR #2554: useRenderActivity, useRenderAttachment
    • PR #2644: Added internal/useWebChatUIContext for cleaner code
  • Bring your own Adaptive Cards package by specifying adaptiveCardsPackage prop, by @compulim in PR #2543
  • Fixes #2597. Modify watch script to start and add tableflip script for throwing node_modules, by @corinagum in PR #2598
  • Adds Arabic Language Support, by @midineo, in PR #2593
  • Adds AdaptiveCardsComposer and AdaptiveCardsContext for composability for Adaptive Cards, by @compulim, in PR #2648
  • Adds Direct Line Speech support, by @compulim in PR #2621
  • Fixes #2692. Rename sample 17 to 17.a, by @corinagum in PR #2695

Fixed

  • Fixes #2565. Fixed Adaptive Card host config should generate from style options with default options merged, by @compulim in PR #2566
  • Resolves #2337. Remove Cognitive Services Preview warning, by @corinagum in PR #2578
  • Fixes #2559. De-bump remark and strip-markdown, by @corinagum in PR #2576
  • Fixes #2512. Adds check to ensure Adaptive Card's content is an Object, by @tdurnford in PR #2590
  • Fixes #1780, #2277, and #2285. Make Suggested Actions accessible, Fix Markdown card in carousel being read multiple times, and label widgets of Connectivity Status and Suggested Actions containers, by @corinagum in PR #2613
  • Fixes #2608. Focus will return to sendbox after clicking New Messages or a Suggested Actions button, by @corinagum in PR #2628
  • Resolves #2597. Modify watch script to start and add tableflip script for throwing node_modules, by @corinagum in PR #2598
  • Resolves #1835. Adds suggestedActionLayout to defaultStyleOptions, by @spyip, in PR #2596
  • Resolves #2331. Updated timer to use React Hooks, by @spyip in PR #2546
  • Resolves #2620. Adds Chinese localization files, by @spyip in PR #2631
  • Fixes #2639. Fix passed in prop time from string to boolean, by @corinagum in PR #2640
  • component: Updated timer to use functional component, by @spyip in PR #2546
  • Fixes #2651. Add ends-with string module to es5 bundle, by @corinagum in PR #2654
  • Fixes #2658. Fix rendering of markdown images in IE11, by @corinagum in PR #2659
  • Fixes #2662 and #2666. Fix various issues related to Direct Line Speech, by @compulim in PR #2671
    • Added triple-buffering to reduce pops/cracks.
    • Enable Safari by upsampling to 48000 Hz.
    • Support detailed output format on Web Chat side.
  • Fixes #2700. Enable <SayComposer> and Adaptive Cards in recompose story, in PR #2649
    • Moved <SayComposer> from <BasicTranscript> to <Composer>
    • Moved WebSpeechPonyfill patching code from <BasicTranscript> to <Composer>
  • Fixes #2699. Disable speech recognition and synthesis when using Direct Line Speech under IE11, by @compulim, in PR #2649
  • Fixes #2709. Reduce wasted render of activities by memoizing partial result of <BasicTranscript>, by @compulim in PR #2710
  • Fixes #2710. Suggested actions container should persist for AT, by @corinagum in PR #2710
  • Fixes #2718. Add Object.is polyfill for IE11, by @compulim in PR #2719
  • Fixes #2723. Fix renderMarkdown should not be called if it is undefined in minimal bundle, by @compulim in PR #2724

Changed

  • Bumped all dependencies to latest version, by @compulim, in PR #2533 and PR #2621
    • Development dependencies
      • Root package
        • @azure/storage-blob@12.0.0
        • @babel/plugin-proposal-class-properties@7.5.5
        • @babel/plugin-proposal-object-rest-spread@7.6.2
        • @babel/plugin-transform-runtime@7.6.2
        • @babel/preset-env@7.6.3
        • @babel/preset-react@7.6.3
        • @babel/preset-typescript@7.6.0
        • @babel/runtime@7.6.3
        • babel-jest@24.9.0
        • core-js@3.3.6
        • coveralls@3.0.7
        • husky@3.0.9
        • jest-image-snapshot@2.11.0
        • jest@24.9.0
        • lerna@3.18.3
        • lint-staged@9.4.2
        • selenium-webdriver@4.0.0-alpha.5
        • serve-handler@6.1.2
      • Other packages
        • @babel/cli@7.6.4
        • @babel/core@7.6.4
        • @babel/plugin-proposal-class-properties@7.5.5
        • @babel/plugin-proposal-object-rest-spread@7.6.2
        • @babel/plugin-transform-runtime@7.6.2
        • @babel/preset-env@7.6.3
        • @babel/preset-react@7.6.3
        • @babel/preset-typescript@7.6.0
        • @types/node@12.12.3
        • @types/react@16.9.11
        • @typescript-eslint/eslint-plugin@2.6.0
        • @typescript-eslint/parser@2.6.0
        • babel-plugin-istanbul@5.2.0
        • concurrently@5.0.0
        • copy-webpack-plugin@5.0.4
        • eslint-plugin-prettier@3.1.1
        • eslint-plugin-react-hooks@2.2.0
        • eslint-plugin-react@7.16.0
        • eslint@6.6.0
        • http-proxy-middleware@0.20.0
        • jest@24.9.0
        • terser-webpack-plugin@2.2.1
        • typescript@3.6.4
        • webpack-cli@3.3.10
        • webpack@4.41.2
    • Production dependencies
      • core
        • @babel/runtime@7.6.3
        • jsonwebtoken@8.5.1
        • math-random
        • redux-saga@1.1.1
        • simple-update-in@2.1.1
      • bundle
        • @babel/runtime@7.6.3
        • core-js@3.3.6
        • markdown-it@10.0.0
        • memoize-one@5.1.1
        • sanitize-html@1.19.0
        • url-search-params-polyfill@7.0.0
      • component
        • bytes@3.1.0
        • memoize-one@5.1.1
        • react-dictate-button@1.2.1
        • react-redux@7.1.1
        • remark@11.0.1
        • sanitize-html@1.20.1
        • simple-update-in@2.1.1
        • strip-markdown@3.1.1
      • embed
        • @babel/runtime@7.6.3
        • core-js@3.3.6
  • component: Bumps adaptivecards@1.2.3, by @corinagum in PR #2523
  • Bumps Chrome in Docker to 78.0.3904.70, by @spyip in PR #2545
  • bundle: Webpack will now use webpack-stats-plugin instead of webpack-visualizer-plugin, by @compulim in PR #2584
  • Resolves #2674. Update embed docs, by @corinagum, in PR #2696

Samples

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants