#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using namespace std;
void solve() {
  long long int n, m;
  cin >> n >> m;
  char s[n][m];
  for (ll i = 0; i < n; i++)
    for (ll j = 0; j < m; j++) {
      cin >> s[i][j];
    }
  long long int gg = 0;
  for (ll i = 0; i < n; i++) {
    for (ll j = 0; j < m; j++) {
      if (s[i][j] == 'B') {
        if (i != n - 1 && s[i + 1][j] == 'G') {
          cout << "No\n";
          return;
        } else if (i != n - 1 && s[i + 1][j] == '.')
          s[i + 1][j] = '#';
        if (i != 0 && s[i - 1][j] == 'G') {
          cout << "No\n";
          return;
        } else if (i != 0 && s[i - 1][j] == '.')
          s[i - 1][j] = '#';
        if (j != 0 && s[i][j - 1] == 'G') {
          cout << "No\n";
          return;
        } else if (j != 0 && s[i][j - 1] == '.')
          s[i][j - 1] = '#';
        if (j != m - 1 && s[i][j + 1] == 'G') {
          cout << "No\n";
          return;
        } else if (j != m - 1 && s[i][j + 1] == '.')
          s[i][j + 1] = '#';
      } else if (s[i][j] == 'G')
        gg++;
    }
  }
  if (gg == 0) {
    cout << "Yes\n";
    return;
  }
  if ((n > 1 && s[n - 2][m - 1] == 'B') || (m > 1 && s[n - 1][m - 2] == 'B')) {
    cout << "No\n";
    return;
  }
  if (s[n - 1][m - 1] != '.') {
    cout << "No\n";
    return;
  }
  queue<pair<long long int, long long int>> q;
  bool vis[n][m];
  for (ll i = 0; i < n; i++)
    for (ll j = 0; j < m; j++) vis[i][j] = false;
  q.push({n - 1, m - 1});
  vis[n - 1][m - 1] = true;
  while (!q.empty()) {
    long long int r = q.front().first;
    long long int c = q.front().second;
    q.pop();
    vis[r][c] = true;
    if (c != 0 && (s[r][c - 1] == '.' || s[r][c - 1] == 'G')) {
      if (!vis[r][c - 1]) {
        q.push({r, c - 1});
        vis[r][c - 1] = true;
      }
    }
    if (r != 0 && (s[r - 1][c] == '.' || s[r - 1][c] == 'G')) {
      if (!vis[r - 1][c]) {
        q.push({r - 1, c});
        vis[r - 1][c] = true;
      }
    }
    if (r != n - 1 && (s[r + 1][c] == '.' || s[r + 1][c] == 'G')) {
      if (!vis[r + 1][c]) {
        q.push({r + 1, c});
        vis[r + 1][c] = true;
      }
    }
    if (c != m - 1 && (s[r][c + 1] == '.' || s[r][c + 1] == 'G')) {
      if (!vis[r][c + 1]) {
        q.push({r, c + 1});
        vis[r][c + 1] = true;
      }
    }
  }
  for (ll i = 0; i < n; i++) {
    for (ll j = 0; j < m; j++) {
      if (s[i][j] == 'G' && vis[i][j] == false) {
        cout << "No\n";
        return;
      }
    }
  }
  cout << "Yes\n";
  return;
}
int32_t main() {
  ios::sync_with_stdio(false);
  cin.tie(NULL);
  ;
  long long int t;
  cin >> t;
  while (t--) solve();
  return 0;
}
