#include <bits/stdc++.h>
using namespace std;
int t, n, m, totg = 0;
char a[100][100];
int mk[100][100], vis[100][100];
int way[5][2] = {{0, 0}, {1, 0}, {-1, 0}, {0, 1}, {0, -1}};
int main() {
  std::ios::sync_with_stdio(false);
  cin >> t;
  while (t--) {
    cin >> n >> m;
    for (int i = 0; i <= n + 2; i++) {
      for (int j = 0; j <= m + 2; j++) {
        mk[i][j] = 0;
        vis[i][j] = 0;
      }
    }
    totg = 0;
    for (int i = 1; i <= n; i++) {
      for (int j = 1; j <= m; j++) {
        cin >> a[i][j];
        if (a[i][j] == 'G') {
          totg++;
        }
        if (a[i][j] == 'B') {
          mk[i][j] = mk[i - 1][j] = mk[i + 1][j] = mk[i][j - 1] = mk[i][j + 1] =
              1;
        }
        if (a[i][j] == '#') {
          mk[i][j] = 1;
        }
      }
    }
    int tot = 0;
    int x = n, y = m;
    queue<pair<int, int> > q;
    q.push({x, y});
    vis[x][y] = 1;
    if (mk[x][y] == 0) {
      while (!q.empty()) {
        auto tmp = q.front();
        q.pop();
        x = tmp.first;
        y = tmp.second;
        if (a[x][y] == 'G') {
          tot++;
        }
        for (int j = 1; j <= 4; j++) {
          int xx = x + way[j][0], yy = y + way[j][1];
          if (xx >= 1 && xx <= n && yy >= 1 && yy <= m && vis[xx][yy] == 0) {
            if (mk[xx][yy] == 0) {
              q.push({xx, yy});
              vis[xx][yy] = 1;
            }
          }
        }
      }
    }
    if (tot == totg) {
      cout << "YES\n\n";
    } else
      cout << "NO\n\n";
  }
  return 0;
}
