#include <bits/stdc++.h>
using namespace std;
const long long INF = 1e9;
const long long MOD = 1e9 + 7;
const double pi = acos(-1);
long long power(long long a, long long b, long long m = MOD) {
  long long ans = 1;
  while (b > 0) {
    if (b & 1) ans = (ans * a) % m;
    a = (a * a) % m;
    b >>= 1;
  }
  return ans;
}
long long dir[] = {-1, 0, 1, 0, -1};
long long dx[] = {1, 1, 0, -1, -1, -1, 0, 1};
long long dy[] = {0, 1, 1, 1, 0, -1, -1, -1};
const long long N = 1e5 + 1;
void solve() {
  long long i, j, k, n, m;
  cin >> n >> m;
  char a[n][m];
  for (i = 0; i < n; i++)
    for (j = 0; j < m; j++) cin >> a[i][j];
  for (i = 0; i < n; i++)
    for (j = 0; j < m; j++) {
      if (a[i][j] == 'B') {
        for (k = 0; k < 4; k++) {
          long long xx = i + dir[k], yy = j + dir[k + 1];
          if (xx >= 0 and yy >= 0 and xx < n and yy < m and a[xx][yy] == '.')
            a[xx][yy] = '#';
        }
      }
    }
  queue<pair<long long, long long> > q;
  long long vis[n][m];
  memset(vis, 0, sizeof vis);
  if (a[n - 1][m - 1] == '.') {
    q.push({n - 1, m - 1});
    vis[n - 1][m - 1] = 1;
  }
  while (!q.empty()) {
    pair<long long, long long> p = q.front();
    q.pop();
    long long x = p.first, y = p.second;
    for (i = 0; i < 4; i++) {
      long long xx = x + dir[i], yy = y + dir[i + 1];
      if (xx >= 0 and yy >= 0 and xx < n and yy < m and !vis[xx][yy] and
          a[xx][yy] != '#') {
        q.push({xx, yy});
        vis[xx][yy] = 1;
      }
    }
  }
  for (i = 0; i < n; i++)
    for (j = 0; j < m; j++) {
      if ((a[i][j] == 'B' and vis[i][j]) or (a[i][j] == 'G' and !vis[i][j])) {
        cout << "No"
             << "\n";
        return;
      }
    }
  cout << "Yes"
       << "\n";
}
int32_t main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  long long t;
  t = 1;
  cin >> t;
  while (t--) solve();
}
