#include <bits/stdc++.h>
using namespace std;
int t, n, m, nr, nrb;
int a[51][51];
bool viz[51][51];
int dx[] = {-1, 0, 1, 0}, dy[] = {0, 1, 0, -1};
vector<pair<int, int> > g, b;
inline bool ok(int first, int second) {
  if (first < 1 || first > n || second < 1 || second > m) return 0;
  if (viz[first][second]) return 0;
  if (a[first][second] == 1) return 0;
  return 1;
}
inline bool ok1(int first, int second) {
  if (first < 1 || first > n || second < 1 || second > m) return 0;
  if (a[first][second]) return 0;
  return 1;
}
inline void BFS(int sx, int sy) {
  queue<pair<int, int> > q;
  q.push({sx, sy});
  viz[sx][sy] = 1;
  if (a[sx][sy] == 1) return;
  while (!q.empty()) {
    int first = q.front().first, second = q.front().second;
    if (a[first][second] == 2)
      ++nr;
    else if (a[first][second] == 3)
      ++nrb;
    q.pop();
    for (int d = 0; d < 4; ++d) {
      int nx = first + dx[d], ny = second + dy[d];
      if (ok(nx, ny)) {
        q.push({nx, ny});
        viz[nx][ny] = 1;
      }
    }
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0), cout.tie(0);
  cin >> t;
  while (t--) {
    cin >> n >> m;
    for (int i = 1; i <= n; ++i) {
      for (int j = 1; j <= m; ++j) {
        char c;
        cin >> c;
        if (c == '#')
          a[i][j] = 1;
        else if (c == 'G') {
          a[i][j] = 2;
          g.push_back({i, j});
        } else if (c == 'B') {
          a[i][j] = 3;
          b.push_back({i, j});
        }
      }
    }
    for (auto it : b) {
      int px = it.first, py = it.second;
      for (int d = 0; d < 4; ++d) {
        int nx = px + dx[d], ny = py + dy[d];
        if (ok1(nx, ny)) a[nx][ny] = 1;
      }
    }
    BFS(n, m);
    cout << (nr == (int)g.size() && !nrb ? "Yes\n" : "No\n");
    g.clear();
    b.clear();
    memset(a, 0, sizeof(a));
    memset(viz, 0, sizeof(viz));
    nr = 0, nrb = 0;
  }
  return 0;
}
